суббота, 23 января 2010 г.

Рефакторинг как способ осознания кода

На внутренней конференции один наш высокий управленец (топ-менеджер) в сердцах сказал: "У нас в команде ХХХ каждый новый лидер заявляет что код никуда ни годится и нужно все переписать. С начала. Так уже раза 3 было. С каждым новым лидером. Ничего существенного в плане бизнес-функций добавлено в это время не было". Все посмеялись.

Я сразу вспомнил то, что я называю стадии "взросления программиста в проекте". Вот новый программист приходит в проект. Предположим, он достаточно молод (до 7 лет промышленной разработки).

1 стадия - разработчик знакомится с кодом и восклицает "что за хрень тут понаписали!". Ему хочется все переписать, он даже начинает прикидывать как он это сделает.

Но задачи нужно решать, время идет и все переписывать никто не даст. Приходится материться и жить с тем, что есть. Когда решена пара поставленных задач, наступает

2 стадия - разработчик перестает хныкать и жаловаться на несносность кода вслух и местами даже начинает его хвалить ("хм, а вот тут неплохо было придумано"). "Ну не идиоты же его писали, такие же как и я" - и такие мысли тоже появляются. Желание переписать все еще сильно, разработчик даже составляет диаграмму компонентов и классов и расписывает текущий функционал по ним. В процессе создания такой диаграммы разработчик детально знакомится с текущей архитектурой и тут незаметно наступает

3 стадия - "В принципе далеко неглупые люди это сделали". Оценив свои будущие временные затраты на перепись и оригинальные архитектурные решения старого кода, программист всерьез задумывается о смысле. Жизни. Если он решается на перепись, то по прошествии времени вернется к стадии 1. Потому что не повзрослел. Когда повзрослееь, его ждет

4 стадия - "Смирение". "Понятно что здесь не все идеально, но это уже очень долго работает. Причем неплохо работает." Разумный выход конечно - переделать то что плохо. Но не то, что плохо написано, а то что плохо работает.


Думаю так. Да. Надеюсь что до 4й стадии скоро доберусь :)

23 янв 2010