Тож питання було:
Це насправді звичайна практика чи якимось чином хороша ідея?
Серед доступних на даний момент відповідей є гучний " ні" . Отже, є небагато інших речей, про які я міг би прозвучати, як-от; навіть процедурний код можна зробити модульним і включати все, окрім кухонної мийки - це не те, як ви досягаєте модульності. Те, що робить один з гігантських класів на партії, все це зводить до одного великого безладу.
Однак це питання - це червона оселедець до реальної критичної частини того, що було пропущено; оскільки ОП також має сказати про ситуацію:
(...) Хоча моя реакція кишки полягала в тому, щоб вивести її з орбіти, вони наполягають ...
(...) Я схильний вжити негайних заходів, щоб збити цього звіра (або принаймні запобігти його подальшому зростанню), але я готовий вірити, що я помиляюся.
НЕ ПОСПІШАЙТЕ!
Це ось те, що змусило мого образно кажучи монокля впасти в мою образну чашку чаю.
Я був у подібних ситуаціях, і дозвольте сказати вам: НЕ впадайте за позиви зробити це. Звичайно, ви можете кинути Nuke Hammer of Justice команди, але перш ніж це зробити, будь ласка, принижте себе за допомогою такої трохи головоломки:
Що станеться, якщо ти скажеш команді, що їхній код смокче і відторгається ?
(... або щось подібне, але менш образливо, це насправді не має значення, тому що вони будуть ображені незалежно від того, що ви робите, якщо ви вирішите піти на них на повну силу)
Яка ситуація з кодовою базою? Це працює? Тоді у вас виникнуть великі проблеми з поясненням їхніх клієнтів, що їх код по суті відстійний . Незалежно від того, які причини вони мають: доки він працює, більшість клієнтів не переймаються питанням організації коду.
Також покладіть себе в їх взуття, що б вони робили? Дозвольте розвеселити вас таким можливим результатом:
Член команди №1: "Отож, цей хлопець говорить нам, що ми робили це неправильно протягом останніх років".
Член команди №2 та №3: "Що за ривок".
Впливовий член групи №4: "Не хвилюйтеся про це, я просто піду до керівництва і повідомлю про це як про утиски".
Подивіться, що там зробив член впливової команди №4 ? Він пішов до управління і скоротив вашу карму в компанії. Він може бути американсько-італійським, кажучи всім не турбуватися про це, але тоді я буду расистським щодо цього.
Перевести групу порушників у куток, щоб дати їм визнати, що вони так довго робили неправильно - це також погана ідея і призвести до того ж самого. Ви втратите повагу і карму офісної політики.
Навіть якщо вам вдалося змусити купу людей відмовитися від цього, щоб «навчити команду уроку», пам’ятайте, що ви робите це досить розумним людям, які, мабуть, щось роблять. Як тільки код буде переписаний / перероблений / розібраний / що завгодно, і виникнуть проблеми, за які ви будете притягуватися до відповідальності, як ви були начальником пожеж .
Змагання щодо подібних ситуацій - це в основному гра в програш / програш, оскільки це ризикує стати порочним колом винних ігор. Це неоптимальний результат для цієї ситуації. Навіть якщо ви виграєте, вас раптом передають безлад, який зробив хтось інший.
Є й інші (значно зрілі) способи
Я був у подібній ситуації одного разу, але потім взяв стрілу в коліно. Тож через деякий час із тією раптовою стрілкою, що змінила кар’єру, я отримав книгу « Водіння технічних змін» Терренса Райана . У ньому перераховано кілька моделей скептиків, такі люди не діють на гарні ідеї. Усі вони, найімовірніше, застосовні у випадку ОП:
- Неінформовані - вони справді не знали, що існують інші способи, або просто не розуміли. Молодші розробники зазвичай підходять до цієї категорії, але не обов'язково. (Якщо чесно: я зустрів молодших розробників, які були б яскравішими за це.)
- Стадо - Вони знали кращі методи, ніж використання часткових занять, але не знали, що їм дозволено.
- The Cynic - Вони просто хочуть стверджувати, що часткові заняття - це краще, ніж ваша ідея, просто сперечаючись. Це легко зробити в натовпі, а не стояти перед натовпом.
- The Burned - Чомусь вони не люблять створювати нові класи, швидше за все, вони сприймають це як надто складно.
- The Time Crunched - Вони настільки зайняті, що не можуть завадити виправити свій код.
- Бос - Вони думають: "Ну це працює; то чому б це турбувати?"
- Ірраціональне - Добре, вони просто абсолютно божевільні.
Книга продовжується із переліком стратегій тощо, але у випадку з ОП це питання переконання. Потужність голови з фактами про анти-візерунок недостатньо.
Якщо вам подобається підвищити якість коду, принаймні дайте шанс команді-порушнику повторити і виправити власний безлад . Особисто я спробував би їх згорнути, слухаючи і задаючи провідні запитання, нехай розповість свою історію:
- Що саме робить їх клас богів?
- Чи стикалися вони з якимись проблемами? Чи є у них помилки? Запропонуйте правильні виправлення, не кажучи їм це робити.
- Якщо ви користуєтеся цим класом богів як API: Чи існують простіші способи використання коду, ніж використання всієї справи? Запропонуйте простіші приклади, подивіться, як вони реагують.
- Чи можете ви вимкнути якусь функціональність з іншою, не вимагаючи записати функцію?
- Чи потребують вони певної підготовки? Чи можете ви переконати керівництво в тому, щоб дати їм це зробити, або пообідати зустрічами з приводу звичаїв та практик?
... і так далі. Дайте їм невеликі пропозиції, щоб вони могли рухатися вперед. Це потребує часу і знадобиться трохи змащення ліктя для офісної політики, але терпіння і наполеглива праця - це чеснота, правда?