пятница, 29 июля 2016 г.

Spring. Хоть и неплохой, но почему я его не люблю.

Не знаю, работали ли вы со спрингом, но я внесу свои 5 копеек на тему почему я его не люблю.
В нормальной спеке а ля J2EE есть чоткая граница между интерфейсами и реализацией. При этом несмотря на казенность языка J2EE спеки в принципе ее можно прочесть и обозреть. Спринг же это монстр с кишками наружу. Да еще и с отсутствием внятного иерархичного описания. То есть у него внутри кишки перемешаны - типа херачь не хочу. И снаружи доки переписаны - точки входа и построения нормального представления нет. Все нормальные спеки древовидные потому что если так, до даже если ты не знаешь куда тебе надо попасть ты всегда знаешь куда тебе идти. В плоской структуре чтобы понять куда тебе попасть тебе надо знать все про все. Это ахтунг.
Вот простой пример. Допустим я решил что хочу что-то сделать после инициализации бинов в контейнере. Казалось бы - иди в документацию, кури оглавние и там ищи что-то типа контэйнер state machine. Как бы не хуй. Иди в ClassPathXmlApplicationContext и кури конструктор. Иниибет. Ну это как бы норм для наколенной поделки, но тут как бэ версия 4.3.2. Не какая-то там альфа на хоум пейдже васи пупкина. Это проект, который дефакто используется в более чем половине всех джавских серверных (а может и клиентских) приложений. Который изначально создавался как легковесная замена JEE, а теперь собственно призван умирающего поциента собой заменить. И эти люди еще спрашивают меня паттерны и объясняют мне, что я плохой архитектор. А сами спринг юзают.
Появление спринга было бы невозможно 20 лет назад ввиду отсутствия интернета и поисковых машин. Типичный алгоритм решения проблемы сводится к "поищу как это сделали менее волосатые собратья в интернете, на крайняк посмотрю исходники". И это еще хорошо, что он неплохо написан, и неплохо документирован. Но господа смотреть исходники для того, чтобы попользовать самый популярный джавский фреймворк - не кажется ли вам это моветоном. Мне хватает простите "исследований" "труда" моих коллег. За глаза.
В общем печалька в том, что программист в наши дни превращается в сисадмина. Работа из разряда почитай документацию и сделай как написано. Найди. Повтори. Не то, чтобы это плохо - мамы всякие нужны. Но просто если бы лично мне нравилось сисадминить, то я бы пошел в сисадмины, а не программеры.

ЗЫ: Как я уже давно начал говорить проект либо развивается, либо умирает. Спрингу нужен рефакторинг. И нехер ссать на тему обратной совместимости. Это норм, что интерфейсы меняются, особенно для проекта в котором нужно рыть исходники, чтобы понять как сделать то и се. Движуха - добро если соблюдается баланс, не дает превращаться коду в болото. Как я, опять таки, давно начал говорить, не понимаешь как это работает - делай рефакторинг. Даже беспричинный рефакторинг хорош потому что дает тебе возможность разобраться как это устроено, особенно если код хорошо покрыт хорошими функциональными тестами.

Такие дела.