Увидел ссылку на приципиальный во многом спор Сполски и Мартина (их позиции здесь и здесь соответственно). В обсуждении удачно выделена наиболее показательная цитата Сполски:
One of the SOLID principles, and I'm totally butchering this, but, one of the principles was that you shouldn't have two things in the same class that would be changed for a different reason. Like, you don't want to have an Employee class, because it's got his name which might get changed if he gets married, and it has his salary, which might get changed if he gets a raise. Those have to be two separate classes, because they get changed under different circumstances. And you wind up with millions of tiny little classes, like the EmployeeSalary class, and it's just... (laughs) idiotic! You can't build software that way! The way real software works is that you create these very imperfect things, and they work great. They really do. And then you have a little problem, and you go and you fix the little problem, because it's code, and you have an editor, and you edit it. These classes are not going to go wander off flying in the universe all by themselves and need to work perfectly and unchanged until the end of time.
Для меня это выглядит настолько резко ошибочным, что даже сложно сформулировать поначалу, что именно не так ("слишком о многом нужно сказать"). Особенно если учесть, что автор высказывания занимается отнюдь не rocket science, а выпускает лучшем случае бизнес- и даже социальные продукты.
Грубо говоря, такой подход предполагает, что человек и его способности - самое сильное звено в производственной цепочке, а не наоборот. Мне же кажется, чтобы понять некоторую излишнюю оптимистичность (чтобы не сказать наивность) такой позиции, достаточно просто оглянуться вокруг.

7 comments:
Извиняюсь за выражения, но Мартин - известный агилист, а Сполски так и вовсе веб девелопер. Первый зарабатывает на жизнь продажей красивых акронимов менеджерам в костюмах, второй - веб-системами на VB с самопальными расширениями.
Что и видно из их позиции, очень характерный спор вышел. И совершенно бесполезный.
Мне в любом случае было удивительно, что мнения в основном на стороне Сполски (по ссылке в посте и в трансляции) даже не у программистов, а у архитекторов и руководителей. Мне всё же это кажется неправильным.
Положим при таком выборе... я тоже за Сполски. Потому что лучше уж на самом деле по месту решать, чем исполнять агилистские ритуалы: в первом случае может случайно и получиться хороший результат, а во втором... Вот собственно о SOLID - попробуй представить, что получится с кодом любого своего проекта, если провести рефакторинг по этим принципам. И объяснения Мартина, что на самом деле всё не так, как на самом деле, и SOLID это видите ли парадигма, которой надо следовать по духу, и если проект провалился, то у вас был не настоящий agile... неубедительны.
Зато большие буквы и многозначительные названия (do you want you architecture to be SOLID?) благотворно влияют на CIO (Презентация, powerpoint, S. (слайд), O. (слайд) ... SOLID!)
Я, кстати, говоря о программистах и архитекторах, не имел в виду, что одни знают больше других - просто в таком вопросе у них разные интересы, как мне представляется.
Ты учитываешь, что довод Сполски - не это, а "программист всегда придёт и разберётся"?
SOLID и т.д. это "давайте навредим везде понемножку, но, наверное, нигде не пропустим большой дыры", а Сполски говорит "да ладно, всегда прокатывало и сейчас прокатит".
Даже при всей сомнительности формулировок солида альтернатива какая-то совсем кустарная.
По поводу "слайдов" согласен, http://en.wikipedia.org/wiki/Gnomes_(South_Park_episode)
Да с твоим-то выводом я полностью согласен (и большинство комментаторов, думаю, тоже).
Вот только пример с Мартином крайне неудачный. Альтернатива SOLID - это не Сполски, а множество других методик, правил, способов и инструментов проектирования и рефакторинга. Получилось что-то вроде, "ходить пешком - медленно и ненадёжно, всё должны ездить на трёхколесных велосипедах с солнечными батареями и водородом в шинах". Вот комментаторы и говорят, что лучше уж пешком.
Кстати, в той же самой трансляции ты пишешь про ценность методик, описания, документирования - а agile (Мартин в том числе), наоборот, декларирует свободу от всего этого за счёт "командного духа", строго следования спискам правил из Н-пунктов и жестокого ежедневного контроля за временем и прогрессом сотрудников.
Post a Comment