Деякі з "домовленостей щодо конфігурації" просто зводяться до розумних значень за замовчуванням. Вам слід лише налаштувати щось, щоб використовувати його для нестандартних цілей. Я маю тут порівнювати Struts з Rails. У Rails ви повинні помістити свої "дії / екрани" в папку, і тоді вони просто працюють. У Struts вам все одно потрібно помістити їх у папку, але ви також повинні придумати ім'я дії І JSP-файл І ім'я форми І Іменник форми І вказати, як ці три речі працюють разом у Struts-config. xml І вкажіть, що форма належить до запиту (RESTful). Якщо цього недостатньо, відображення форми / форма-квасоля має власний розділ у Struts-config, який потім незалежно відображається в розділі дії в тому ж файлі, і все це покладається на рукописні рядки у файлі JSP для роботи належним чином. Для кожного екрана це принаймні 6 речей, які вам не слід було робити, і стільки ж можливостей зробити помилку. Я думаю, що ви можете встановити більшість або всі ці речі вручну в Rails, якщо вам потрібно, але 2/3 часу розробки Struts вимагає створення та підтримки зайвих шарів складності.
Чесно кажучи, Struts 1 був розроблений, коли люди переносять програми між робочим столом та Інтернетом. Гнучкість, яку втручав Струтц, робить його придатним для всього, що робить Rails, плюс до всього, що знадобиться настільному додатку. На жаль, гора конфігурації, яка дозволяє цю гнучкість, є величезною кулькою і ланцюжком для того, кому просто потрібно написати веб-додаток або просто настільний додаток.
Я десь працював над тим, що вони зробили наступний крок і аргументували "Конфігурація над кодом ", але побачивши, що це було зроблено до своєї логічної крайності, результат - конфігурація стає новою мовою кодування. Це була гра з оболонками, де складність пересувалася, не приручаючись ні в якому значному способі. І мені це вдячно за всі перевірки типу та інші мережі безпеки, які має добре розроблена мова програмування. Якийсь напівзапечений конфігураційний файл конфігурації, який вибухає без повідомлення про помилку, якщо ви додасте пробіл або апостроф, НЕ є поліпшенням щодо якості мови програмування, для якого написані набори інструментів редагування та компілятор якості.
Я не можу собі уявити, що наявність розумних стандартних стандартів порушує будь-які теоретичні принципи щодо розширюваності та модульності. Програміст Ruby / Rails швидше заграє гарячий покер у їх око, ніж перейде на рамку типу Struts 1, де всі конфігурації зроблені явно в декількох XML-файлах. Я загалом не сперечаюся з Rails vs. Struts, але ця конвенція може стати величезною виграшкою продуктивності. Ці дві технології є найбільш екстремальним порівнянням у реальному світі.
Якщо ви взагалі працюєте в Java, ознайомтеся з розділом Джошуа Блоха "Ефективна Java", пункт 2: "Розгляньте, як будівельник стикається з багатьма параметрами конструктора", стор. 11-16. Для більшості цілей потрібні деякі параметри (конфігурація), а деякі - необов'язкові. Основна ідея полягає в тому, щоб вимагати лише необхідної конфігурації і лише змусити користувача (який може бути іншою програмою) вказати додаткові параметри за потребою. Місяць тому я прибрав купу коду з цим малюнком, і він позитивно виблискує.