Некоторые из «соглашений о конфигурации» сводятся к разумным значениям по умолчанию. Вам нужно только настроить что-то, чтобы использовать это в нестандартных целях. Я должен сравнить Struts с Rails здесь. В Rails вы должны поместить ваши «действия / экраны» в папку, и тогда они просто будут работать. В Struts вам все еще нужно поместить их в папку, но вы также должны придумать имя действия И файл JSP И имя формы И бин формы И указать, как эти три вещи работают вместе в Struts-config. xml И укажите, что форма принадлежит запросу (RESTful). Если этого недостаточно, отображение формы / формы bean-компонента имеет свой собственный раздел в Struts-config, который затем сопоставляется независимо с разделом действия в том же файле, и все это опирается на рукописные строки в файле JSP для работы должным образом. Для каждого экрана это как минимум 6 вещей, которые вам не нужно делать, и столько же возможностей сделать ошибку. Я думаю, что вы можете установить большинство или все эти вещи вручную в Rails, если вам нужно, но 2/3 времени разработки Struts занимает создание и поддержание ненужных уровней сложности.
Справедливости ради, Struts 1 был разработан, когда люди портировали приложения между рабочим столом и сетью. Гибкость, которую запустил Struts, делает его подходящим для всего, что делает Rails, плюс все, что может понадобиться настольному приложению. К сожалению, гора конфигурации, которая обеспечивает такую гибкость, является огромным препятствием для тех, кому просто нужно написать веб-приложение или просто настольное приложение.
Я работал где-то, что они сделали следующий шаг и спорили: «Конфигурация поверх кода », но увидев, что это доведено до логического предела, в результате конфигурация становится новым языком кодирования. Это была игра-оболочка, в которой сложность преодолевалась без какого-либо существенного вмешательства. И это дало мне признательность за все проверки типов и другие системы безопасности, которые есть у хорошо разработанного языка программирования. Некоторые форматы полуфабрикатов конфигурационных файлов, которые появляются без сообщения об ошибке, если вы добавляете пробел или апостроф, НЕ являются улучшением по сравнению с качественным языком программирования, который имеет наборы инструментов редактирования и качественный компилятор, написанный для него.
Я не могу себе представить, что наличие разумных значений по умолчанию нарушает любые теоретические принципы расширяемости и модульности. Программист на Ruby / Rails скорее бросил бы в глаза горячий покер, чем переключился бы на такую инфраструктуру, как Struts 1, где все конфигурации были сделаны явно в нескольких файлах XML. Я не спорю Rails против Struts IN GENERAL, но это соглашение может стать огромным выигрышем в производительности. Эти две технологии - самое экстремальное сравнение в реальном мире, с которым я сталкивался.
Если вы вообще работаете в Java, прочитайте статью Джошуа Блоха «Эффективная Java», пункт 2: «Рассмотрите Builder, когда сталкиваетесь со многими параметрами конструктора», стр. 11-16. Для большинства целей некоторые параметры (конфигурация) являются обязательными, а некоторые - необязательными. Основная идея состоит в том, чтобы требовать только необходимую конфигурацию и заставлять пользователя (который может быть другой программой) указывать дополнительные параметры по мере необходимости. Я убрал кучу кода с этим шаблоном месяц назад, и он положительно сверкает.