Добавить в корзинуПозвонить
Найти в Дзене
Немного о многом🧐

«Плохой» и «хороший» код

Сложно назвать список объективных характеристик хорошего кода. Таких характеристик мало, и у них есть ограничения в трактовке и применимости. Например Среди таких характеристик можно выделить цикломатическую сложность и количество зависимостей. Разные авторы используют разные слова, но можно заметить, что все делают упор на «читаемость». Есть исследования, которые пытались определить, что такое эта «читаемость». Однако их проблема в маленькой или искажённой выборке, поэтому делать выводы об универсальных правилах «хорошего» кода сложно. Я считаю, что коду нужен рефакторинг, если при чтении возникает одна из этих мыслей: Тяжело читать Тяжело менять Тяжело тестировать «Не помещается в голову» Запахи кода Часть описанных проблем умные люди уже оформили в виде запахов кода. Запахи — это антипаттерны, которые приводят к проблемам. Против запахов уже разработаны решения. Иногда нам достаточно посмотреть на код, найти в нём запах и применить конкретное решение против него.
Оглавление

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

Например

Среди таких характеристик можно выделить цикломатическую сложность и количество зависимостей.

Разные авторы используют разные слова, но можно заметить, что все делают упор на «читаемость». Есть исследования, которые пытались определить, что такое эта «читаемость». Однако их проблема в маленькой или искажённой выборке, поэтому делать выводы об универсальных правилах «хорошего» кода сложно.

Я считаю, что коду нужен рефакторинг, если при чтении возникает одна из этих мыслей:

Тяжело читать

  1. Нам тяжело читать код, если в нём беспорядочное форматирование, он «грузный», запутанный, шумный.
  2. В коде много лишних деталей, нет явной точки входа.
  3. Сложно проследить последовательность выполнения, нужно прыгать между экранами, файлами, строками.
  4. Код непоследовательный, не отвечает правилам, принятым в проекте.

Тяжело менять

  1. Код тяжело менять, если при добавлении новой фичи нужно изменить много файлов или перепроверить всё приложение.
  2. Нет уверенности, что можно беспроблемно удалить конкретный кусок кода.
  3. Нет явной точки входа, нельзя соотнести фичу приложения и конкретный модуль.
  4. Слишком много бойлерплейта или копипасты.

Тяжело тестировать

  1. Код тяжело тестировать, если для тестов нужна «навороченная инфраструктура» или нужно мо́кать много функциональности.
  2. Приходится имитировать работу всей программы, чтобы проверить одну функцию.
  3. Для теста нужны тестовые данные, которые не относятся к задаче.

«Не помещается в голову»

  1. Код не помещается в голову, если сложно уследить за всем, что в нём происходит.
  2. К середине модуля сложно вспомнить, что было в начале.
  3. При чтении «кипит» голова, схемы работы на бумажке не помогают.

Запахи кода

Часть описанных проблем умные люди уже оформили в виде запахов кода. Запахи — это антипаттерны, которые приводят к проблемам.

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

-2