Рубрика: Рефакторинг

  • Плохое форматирование и непонятный алгоритм функции генерации идентификаторов

    Исходный код Что не так в исходном коде Плохое форматирование Отсутствует отступ строк. Отступ измеряется уровнями, один уровень в PHP обычно 4 позиции. Если объявление функции function id начинается на нулевом уровне (без отступа), то все строки внутри функции должны быть на первом уровне отступа, то есть начинаться с позиции 4. Закрывающиая фигурная скобка функции должна быть…

  • Дублирование реализации и смешение знаний при рендеринге дропдауна

    Исходный код Как можно улучшить исходный код Разумеется, нет необходимости столько раз повторять вывод всех опций дропдауна, меняя каждый раз только одну маленькую деталь. Представь, что будет твориться в исходном коде, если опций в дропдауне станет хотя бы 20. Пятикратно повторенный список опций — это пятикратно повторенная реализация этого списка. Опять же, тут в одном фрагменте…

  • Избыточные условия при проверке значения переменной

    Исходный код Что не так в исходном коде Два условия в операторе if являются избыточными: $param!=null и $param!=0. Они никак не защищают проверку от невалидных значений параметра. Абсолютно необходимым является только $param>1 — проверка сработает правильно с ним одним, а isset($param) нужен чтобы избежать предупреждения о неинициализированной переменной.

  • Смешивание знаний при старте десктопного приложения

    Исходный код Что не так в исходном коде Сразу бросается в глаза адская лесенка из вложенных операторов if — else, которая в некий момент почему-то неожиданно прерывается. Когда проходит шок от лесенки, можно рассмотреть в исходном коде смешивание знаний о том, что делать на каждом шаге процесса старта приложения, и как переходить от одного шага к другому. Также…

  • Велосипед при форматировании даты

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

  • Дублирование реализации при формировании списка полей для оператора SELECT

    Исходный код Что не так в этом коде Здесь легко видеть адское дублирование реализаций: проверки наличия поля в списке требуемых полей формирования списка полей для выражения select формирования выражения для единичного поля связки «проверка на наличие поля» — «добавление поля» алгоритма выбора всех поле либо только указанных Адское смешивание знаний о: правилах проверки наличия поля…

  • Дублирование реализации в алгоритме анализа генетической информации

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

  • Избыточное преобразование при простой проверке

    Исходный код Что не так в исходном коде Беглый анализ кода даёт представление о назначении этого фрагмента: здесь выполняется проверка наличия шаблона с заданным идентификатором (templateID) в списке использованных шаблонов (usedTemplaes). Я не люблю реализации алгоритмов проверки, которые без должного на то основания выполняют преобразования своих входных данных. Вместо преобразования массива шаблонов к массиву идентификаторов…

  • Загадочное получение из БД значения, которое уже есть в переменной

    Исходный код Что не так в исходном коде Не очень ясен смысл операции — получить имя пользователя по имени пользователя. Предполагаю, что на входе есть имя пользователя регистронезависимое, и требуется получить имя в точности в том регистре, как оно прописано в БД. Даже при таком раскладе в исходном коде есть несколько слабых мест. Имя пользователя…

  • Адская проверка при валидации входного параметра

    Исходный код Исходный код делает проверку входного параметра на наличие целого числа без знака. Как можно улучшить код Сначала понимаем, что первый и второй if — в точности противоположны друг другу и вместо второго стоит написать просто else. Избавились от мусорного кода. Дальше стоит обратить внимание на изобилие повторов входного параметра, а также смешение знаний: как проверить валидность входного…