Тут как посмотреть. И что считать говнокодом.
Принято считать говнокодом то, что не отвечает паттернам и вообще избегает проектирования. Однако есть и другая точка зрения, и другие подходы к планированию. Когда размывается грань между предварительным и эволюционным проектированием. Находится золотая середина, отвечающая текущим потребностям.
Так вот, те, кто придерживатся первых канонов (планирование, продуманная до мелочей архитектура, паттерны и прочие изыски), больше склонны к нарцисызму, нежели к реалиям. Они пишут код фактически для себя, а не для конечной цели.
Конечная цель любого кода - он должен работать. И работать должен хорошо. Особенно если это коммерческий продукт.
Конечный продукт должен быть оптимальным, быстрым, с низким потреблением ресурсов. Он должен приносить прибыль, а не демонстрировать навыки программиста в плане "смотрите, как я умею".
А цель "планировщиков", это свести на минимум будующий рефакторинг. Они стремятся написать "идельный" код, который будет работать всегда и без внешнего вмешательства. Поэтому у них зашкаливает абстракционизм, оптимальность кладется на алтарь полиморфизма, часто применяется "мягкое программирование", когда изменение поведений достигается не рефакторингом, а настройками. Все это больно бъет по производительности.
Не понятно при этом, зачем потом нужен программист, если код построен так, что с ним больше ничего не нужно делать...
И почему то почти всегда ООП связывают с "предварительным проектированием". А раз для него не придумано ничего, кроме объектов, то и без паттернов тут обойтись никак нельзя.
Вообще любопытно еще другое. Почему то на форумах обычно присутствует два контингента программистов. Начинающие (неопределившиеся), и те, кто свято придерживается канонов ООП. Те, кто определился и выбрал другой путь (
то же XP), обычно с форумов пропадают.
Скорее всего потому что вопросов у них больше нет, а отвечать в ключе "паттерны - это плохо" себе дороже, чревато холиварами и снижением рейтингов. Другими словами - адепты заклюют и объявят говнокодером. Да и сама методология не предусматривает никаких рамок, так что и объяснять то и нечего. Нужно писать так, чтобы хорошо работало, а не так, чтобы ткнув в любое место, мы попали в какой-нибудь паттерн.
Вот
Santehnick дал ссылку на одного из ярких представителей "классицизма". Начитавшись в детстве Зандстры, он видит во всем, что "не по науке" говнокод. Сам не понимая того, что сей продукт кормит не только владельца, но и его, как программиста. Да, непривычно ему, потому и тяжело кажется. А мозги на что?
Я могу другую ссылку дать. Почитайте, весьма любопытно. Кто слаб в английском, есть
неплохой русский перевод. Это Фаулер кстати. Автор многих трактатов по ООП. Так вот он советует не только не бояться рефаторинга, но и видит в нем несомненную пользу. А рефакотринг, это враг предварительного проектирования. Ибо может свести на нет все эти заумные UML диаграммы, взаимосвязи и "стройность" архитектуры, с таким трудом выпестованной и лелеемой "проектировщиками".
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.