Якщо ви працюєте на мовах, у яких відсутні вбудовані структури та функції організації (наприклад, якщо у них немає просторів імен, пакетів, збірок тощо) або там, де їх недостатньо, щоб тримати під контролем базу коду такого розміру, природна реакція полягає в тому, щоб розвиватися наші власні стратегії організації коду.
Ця стратегія організації, ймовірно, включає стандарти, що стосуються того, де слід зберігати різні файли, речі, які повинні відбуватися до / після певних типів операцій, іменування конвенцій та інших стандартів кодування, а також багато "саме так це налаштовано - Не сварись з цим! " введіть коментарі - які діють до тих пір, поки вони пояснюють чому!
Оскільки стратегія, швидше за все, в кінцевому підсумку буде пристосована до конкретних потреб проекту (люди, технології, навколишнє середовище тощо), важко дати рішення, що відповідає всім розмірам, для управління великими базами коду.
Тому я вважаю, що найкращою порадою є прийняття конкретної стратегії проекту та зробити управління ним ключовим пріоритетом: задокументуйте структуру, чому це саме так, процеси внесення змін, перевірити її, щоб переконатися, що вона дотримується, і головне: змінити його, коли потрібно змінити.
Ми в основному знайомі з класами та методами рефакторингу, але з великою базою кодів такою мовою саме організаційна стратегія (у комплекті з документацією) потребує реконструкції, як і коли це необхідно.
Аргументація така ж, як і для рефакторингу: ви розвинете ментальний блок щодо роботи над малими частинами системи, якщо відчуєте, що загальна організація в ній безлад, і врешті дозволять погіршитись (принаймні, це я беру на себе це).
Застереження також однакові: використовуйте тест регресії, переконайтеся, що ви можете легко відновити, якщо рефакторинг піде не так, і спроектуйте так, щоб полегшити рефакторинг в першу чергу (або ви просто цього не зробите!).
Я погоджуюся, що це набагато складніше, ніж прямий код рефакторингу, і важче перевірити / приховати час від менеджерів / клієнтів, які можуть не зрозуміти, чому це потрібно робити, але це також типи проектів, найбільш схильні до гниття програмного забезпечення викликані негнучкими конструкціями верхнього рівня ...