Реконструкція - це як забрати свою кімнату.
Якщо ви тримаєте впорядковані речі, у вас є лінійні накладні витрати, пропорційні кількості продуктивної роботи, яку ви робите над кодом, O (n) з точки зору алгоритмолога. Якщо припустити, що ви витрачаєте 10% часу на реконструкцію (або утримуючи свою кімнату в порядку), це 10% - це дані, і воно буде залишатися незмінним у часі.
Якщо ви кидаєте свій брудний одяг у кут і продовжуєте це робити, кількість часу, яке ви збираєтеся витратити, збираючи свою кімнату, зростає, коли безлад стає складнішим. Якщо припустити, що кожен окремий шматок брудної білизни експоненціально сприяє необхідному часу на прибирання, то зараз ви перебуваєте в O (e n ) ситуації.
Кожен, хто коли-небудь занурювався в поняття алгоритмічної складності, зауважить, що десь існує точка беззбитковості, тобто є оптимальна кількість брудної білизни, яку потрібно накопичити; скільки це залежить від постійних факторів, які відкидаються в нотації big-O. Ще один фактор - цінність вашої роботи з часом: якщо ваша робота зараз стоїть багато, але на наступному тижні дешева (тобто, в цю п'ятницю є крайній термін для цього проекту та ще три, але після цього ви будете здебільшого простоювати ), рівняння може виявитися на користь не рефакторингу.
А тут є критична маса складності. У якийсь момент безлад ("критичний безлад", якщо ви хочете) стає таким поганим, що здається, що простіше просто спалити всю кімнату та придбати новий одяг. Насправді це зазвичай не так, але, мабуть, саме так, і психологічні наслідки зроблять цю справу десять разів складніше.
І очевидно, якщо ви вступили в проект, який вже є гігантським багаторазовим безладом, у вас є обмежений вибір.
TL; DR: Якщо є сумніви, рефактор. Ви повинні мати справді хороші докази, перш ніж вирішити цього не робити.