Refactoring: Improving the Design of Existing Code

Refactoring: Improving the Design of Existing CodeКогда я написал свою первую программу (это были небольшие часики с кучей настроек) я совсем не задумывался о красоте кода. И потому он был пропитан большим количеством дублирований. Копипастом делалось огромное число одинакового функционала и меня это мало беспокоило. В конечном итоге только код главной страницы разросся до 2500 строк кода. Это было более 10 лет назад.

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

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

Мартин Фаулер написал свою книгу "Refactoring: Improving the Design of Existing Code" задолго до того, как я начал свой тернистый путь программиста. Он создал прекрасный каталог методов рефакторинга и описал, когда и какой лучше использовать. Быть может если бы он попал мне в руки тогда-то набитых на моем лбу шишек было бы гораздо меньше, а мой код читался бы намного лучше.

Улучшать код нужно всегда, не нужно выделять при разработке проекта какое-то время под рефакторинг, написание тестов. Все это нужно проводить во время работы над проектом. Заметили, что одинаковый метод присутствуют в двух классах - создали базовый класс и перенесли туда этот метод. Непонятная иерархия наследования? Может пора заменить наследование делегированием?

Есть огромное число всевозможных методов улучшения кода и Мартин Фаулер описал их у себя в книге. Умудренного опытом разработчика книга вряд ли чему-то научит, как и новичка в программировании. Однако будет незаменима тем, кто уже успел набить некоторое количество шишек и хочет узнать, как писать программы за код которых не стыдно и которые можно сопровождать.

Комментарии

Оставить комментарий