"Точка зайвої складності" в англійській мові називається:
О МОЙ БОГ, ЩО ЦЕ КРАП.
Проблема в тому, що це може стосуватися чогось насправді простого, але реалізованого таким жахливим чином, що у вас така ж реакція.
Тож сказати окремо щось дуже складне від чогось жахливого може бути важким.
ТАКОЖ: Те, що насправді має траплятися з усім програмним забезпеченням, це трохи так:
Крок 1: Майте приємну специфікацію, робіть гарний дизайн, втілюйте приємні речі. Усі щасливі.
На завершення кроку 1: розробники вітають себе з чудовою елегантністю їх дизайну та відходять із задоволенням, думаючи: "У мене є чудова спадщина для інших, щоб додати речі до майбутнього, це буде чудово, і світ стане краще місце ».
Крок 2: Деякі зміни вносяться, додаються речі, включаються нові функції. Архітектура та структура з кроку 1 зробили це досить безболісним процесом. [На жаль, "чіткий фактор" трохи збільшився.]
Наприкінці кроку 2: розробники вітають себе з чудовою вишуканістю їх дизайну та відходять із задоволенням, думаючи: "Боже, я так розумний, що зробив усі ці надбавки на кроці 1. Це пройшло так добре. У мене чудова спадщина тут, щоб інші додавали речі в майбутнє, це буде чудово, і світ стане кращим місцем ".
Крок 3: Вноситься більше змін, додається більше речей, додаються нові функції, змінюється купа речей, насправді слухаються відгуки користувачів.
На завершення кроку 3: розробники вітають себе з чудовою вишуканістю їх дизайну і відходять досить радісно, думаючи: "Да, ця архітектура досить гарна, щоб дозволити стільки змін просто прорізатися легко. Але я трохи нещасний про X і Y та Z. Їх зараз можна було трохи прибрати. Але !!! Ааааааааааааааааааааааааааааааааауауразаціяіііх надбавок на Крок 1. Це пройшло так добре. інші, щоб додати речі в майбутньому, це буде чудово, і світ стане кращим місцем ".
Крок 4: як і крок 3. За винятком:
Наприкінці кроку 4: розробники думають: "Цей дуже гарний матеріал отримує UGLY для підтримання. Він дійсно потребує серйозних змін. Мені не дуже подобається працювати над цим. Він потребує рефакторингу. Цікаво, що це за начальник скаже, коли я скажу йому, що йому потрібно 6 тижнів, і користувачі нічого не побачать в кінці цього ... але я отримаю ще 5 років смачної майбутньої сфери модифікації, роблячи це .... хммм .. час піти в паб за пивом ".
Крок 5: Необхідно внести купу змін.
І на протязі 5-го кроку розробники кажуть один одному: "Цей код відстійний. Хто це написав? Їх слід зняти. Це жахливо. МИ МОЖЕМИ ЗНО ЗАПИСИТИ його".
Крок 5 є фатальним. Ось тут основний фактор настільки поганий, що код не може просто змінити ще кілька, він повинен мати великі зміни.
Біда на кроці 5 - це бажання відкинути його і почати заново. Причина цього фатальна - "Фактор Netscape". Перейдіть на Google. Компанії помирають на даний момент, тому що починати знову означає, що ви починаєте з приблизно 50% припущень замість фактів, 150% ентузіазму замість знань, 200% зарозумілості замість смирення ("Ці хлопці були такими дурними!"). І ти вводиш цілу купу нових помилок.
Найкраще зробити це рефактор. Поміняйте трохи за раз. Якщо архітектура трохи втомлюється, виправте це. Додавання, розширення, вдосконалення. Поступово. На кожному кроці по дорозі тестуйте, випробовуйте та перевіряйте ще кілька. Поступові зміни, подібні до цього, означають, що через 10 років діючий та оригінальний код схожий на дідусь сокиру («у нього було 10 нових голів та 3 нових ручок, але це все-таки діда сокира»). Іншими словами, спільного залишилося не так багато. Але ви переходили від старого до нового поступово і обережно. Це знижує ризик, а для клієнтів - зменшує роздратований коефіцієнт.