Итак, вопрос был:
Это обычная практика или в любом случае хорошая идея?
Среди доступных в настоящее время ответов - громкое нет . Таким образом, есть немного других вещей, о которых я мог бы рассказать об этом, таких как; даже процедурный кодекс может быть сделан модульным, включая все, кроме кухонной раковины, - это не то, как вы достигаете модульности То, что делает один гигантский класс, разбитый на частичные, все это превращается в один большой беспорядок.
Однако этот вопрос - красная сельдь для действительно важной части, которая была пропущена; поскольку ФП также может сказать следующее о ситуации:
(...) Хотя моя внутренняя реакция состояла в том, чтобы убить его с орбиты, они настаивают ...
(...) Я склонен предпринять немедленные шаги, чтобы сбить этого зверя (или, по крайней мере, предотвратить его дальнейшее развитие), но я готов поверить, что ошибаюсь.
ПРИДЕРЖИ ЛОШАДЕЙ!
Это то, что заставило мой образно говоря монокль упасть в мою фигуративную чашку чая.
Я был в подобных ситуациях и позвольте мне сказать вам: не поддавайтесь на побуждения сделать это. Конечно, вы можете бросить Nuke Hammer of Justice в команду, но прежде чем сделать это, пожалуйста, позабавьте себя следующей загадкой:
Что произойдет, если вы скажете команде, что их код отстой и отмахнулся ?
(... или что-то в этом роде, но менее оскорбительно, это не имеет значения, потому что они будут обижены независимо от того, что вы делаете, если решите приложить к ним полную силу)
Какова текущая ситуация с кодовой базой? Работает? Тогда у вас возникнут большие проблемы с объяснением их клиентам, что их код по сути отстой . Не имеет значения, по каким причинам: пока он работает, большинство клиентов не заботятся о том, как организован код.
Также поставьте себя на их место, что они будут делать? Позвольте мне позабавить вас очень возможным исходом:
Член команды № 1: «Итак, этот парень говорит нам, что мы делали это неправильно в течение последних лет».
Участник команды № 2 и № 3: «Какой придурок».
Влиятельный член команды № 4: «Не беспокойтесь об этом, я просто пойду к руководству и оповестю об этом».
Посмотрите, что там сделал влиятельный член команды № 4 ? Он пошел в управление и уменьшил вашу карму в компании. Возможно, он американец-итальянец и говорит всем не беспокоиться об этом, но тогда я буду расистом по этому поводу.
Заставить команду-нарушителя загнать в угол, позволив им признать, что они так долго делали это неправильно, - тоже плохая идея, ведущая к тому же. Вы потеряете уважение и карму в офисной политике.
Даже если вам удалось заставить группу людей подписать это, чтобы «преподать команде урок», помните, что вы делаете это с довольно умными людьми, которые, очевидно, добились определенных результатов. После того, как код будет переписан / реорганизован / обработан / с чем бы то ни было, и возникнут проблемы, вы будете привлечены к ответственности, так как вы были зачинщиком .
Состязаться с подобными ситуациями - это, в основном, игра «проиграл / проиграл», так как рискует стать порочным кругом игр с обвинениями. Это неоптимальный результат для этой ситуации. Даже если вы выиграете, вам вдруг передадут тот беспорядок, который сделал кто-то другой.
Есть и другие (очень зрелые) способы
Однажды я был в подобной ситуации, но потом взял стрелу в колено. Так что через некоторое время с этой внезапно меняющейся карьерной стрелой в моей голове появилась книга Терренса Райана «Вождение технических изменений» . В нем перечислены несколько моделей скептиков, такие люди не действуют на хорошие идеи. Все они наиболее вероятно применимы в случае ОП:
- Неосведомленные - Они действительно не знали, что есть другие пути, или просто не понимали. Младшие разработчики обычно подходят к этой категории, но не обязательно. (Если честно: я встречал начинающих разработчиков, которые были бы ярче этого.)
- Стадо. Они знали лучшие приемы, чем частичные занятия, но не знали, что им позволено.
- Циник. Им просто нравится утверждать, что частичные занятия лучше, чем ваша идея, просто для того, чтобы спорить. Это легко сделать в толпе, а не стоять перед толпой.
- Ожог - по какой-то странной причине они не любят создавать новые классы, скорее всего, они воспринимают это как слишком сложное.
- Время сокращено - они так заняты, что не могут исправить свой код.
- Босс - Они думают: «Ну, это работает; так зачем?»
- Иррациональное - хорошо, они просто сумасшедшие.
В книге приводится список стратегий и т. Д., Но в случае ОП это вопрос убеждения. Быть сильным с фактами об анти-паттерне недостаточно.
Если вы заинтересованы в повышении качества кода, по крайней мере, дайте возможность команде-нарушителю повторить и исправить собственный беспорядок . Лично я бы попытался повлиять на них, слушая и задавая наводящие вопросы, позволяя им рассказать свою историю:
- Что именно делает их класс бога?
- У них возникли проблемы? У них есть ошибки? Предлагайте вменяемые исправления, не сообщая им об этом.
- Если вы пользователь этого божьего класса в качестве API: есть ли более простые способы использования кода, чем использование всего этого? Предложите более простые примеры, посмотрите, как они реагируют.
- Можете ли вы переключить некоторые функции с другой, без необходимости писать функцию?
- Они нуждаются в некотором обучении? Можете ли вы убедить руководство дать ему это сделать или провести ланч-встречи о моделях и практиках?
... и так далее. Дайте им небольшие предложения, чтобы они могли двигаться вперед. Это займет время и потребует некоторой консистентной смазки, но терпение и тяжелая работа - это достоинство, верно?