понедельник, 10 января 2011 г.

Мнение классиков по поводу переписывания кода

Недавно прочел книжку Джоэла Спольски "Джоэл о программировании" и сейчас читаю "Психбольница в руках пациентов" Алана Купера. Зацепился за то, что авторы крайне противоположно относятся к идеи "полного переписывания" кода.

Алан:
"При каждом изменении программы - будь то исправление ошибок или добавление функций - появляются новые рубцы. Именно поэтому программы следует выбрасывать и полностью переписывать каждые пару десятков лет. Рубцовая ткань с течением времени становится настолько толстой, что препятствует нормальной работе."

Джоэл посвятил этому целую главу "То, чего делать нельзя часть первая" и в частности пишет следующее:
"Выкидывая код и начиная все с начала, вы выбрасываете и все знания. Все эти накопленные исправления ошибок. Годы программистского труда"

При всем при этом оба автора склоняются к безусловной необходимости проектирования и прототипирования и недопустимости применения прототипов как основы готовых проектов.

Лично мне не доводилось видеть проектов, которые целиком переписывались с нуля, но, как и любой разработчик, я сам много раз мечтал об этом. При этом проекты живущие по многу лет и преживающие множество разработчиков обрастают таким слоем мха старых ф-ии и непонятных решении, что зачастую эти части просто страшно трогать.

Теоретически эту проблему должно решать наличие автоматических тестов, позволяющих при любых изменениях иметь возможность проверить всю функциональность. На практике же мне не приходилось работать в проектах где покрытие тестов с одной стороны не приводило бы даже мелкие изменения к диким трудностям с "озеленением" тестов, а с другой обеспечивало проверку всех особенностей приложения добавленных за многие годы.

А что думают о переписывании проектов мои уважаемые читатели?

2 комментария:

Anton Mamaenko комментирует...

Переписать с нуля всегда дороже, чем модифицировать.
И если уж переписывать, то не код, а алгоритм.

Артур комментирует...

Ну знаете, читать код, написанный несколькими десятками программистов, которые, например, уже не работают, тоже не сахар. =\