Хроники быдлокодера: лирическое отступление №1. Живой рефакторинг.

Jun 23, 2015 18:48




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


Смысл вычисления поля CurrentYear должен быть понятен: в зависимости от даты приоритета и текущей даты определяется год действия патента.
Сразу в глаза бросается почти дублирующийся участок кода в двух методах, связанных с вычислением однородных полей в разных таблицах базы данных. Во втором методе уже сразу приведен пример рефакторинга: вместо вложенных и ненаглядных условных операторов использован один с применением логического ИЛИ и логического И. Этот метод рефакторинга называется консолидация условного выражения.  Применяем его и в первом методе:


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


Поскольку нам нужно возвратить итоговое значение, делаем не процедуру, а функцию (причем lazarus сам определил, какой тип значения и с каким названием нужно вернуть), присваиваем понятное имя функции и жмём "извлечь":


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


Заменяем ненужный теперь код вызовом новой функции в первом методе:


Делаем то же со вторым, а заодно удаляем ненужную теперь локальную переменную, и, вуаля, получаем красивейший код, состоящий из одной строки и там, и там :-)


Вывод: читайте, дети, книжку Мартина Фаулера "Рефакторинг", почерпнёте много полезного. И правильная картинка вместо унылого котика в начале будет теперь такая:


pascal, программирование, кодинг, lazarus, рефакторинг, паскаль

Previous post Next post
Up