PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Как отличить плохой код от хорошего?

Продвинутые темы

Хороший код отличается от плохого читаемостью, простотой, тестируемостью, слабой связанностью и предсказуемостью; плохой — запутан, дублирован, хрупок и труден для изменения.

Признаки хорошего кода

  • Читаемость — понятные имена, ясная структура; код читают чаще, чем пишут.
  • Простота (KISS) — решает задачу без лишней сложности.
  • DRY — нет неоправданного дублирования.
  • Единственная ответственность — функции/модули делают одно.
  • Слабая связанность — части независимы, легко менять.
  • Тестируемость — чистые функции, инъекция зависимостей.
  • Предсказуемость — нет скрытых побочных эффектов.
  • Обработка ошибок — крайние случаи учтены.
  • Консистентность — единый стиль (линтеры, форматтеры).

Признаки плохого кода

  • Непонятные имена, «магические» числа.
  • Огромные функции, делающие всё сразу.
  • Дублирование, копипаста.
  • Жёсткая связанность, глобальное состояние.
  • Скрытые побочные эффекты, трудно тестировать.
  • Отсутствие обработки ошибок.

Как оценивать на практике

  • Легко ли понять код без автора?
  • Легко ли изменить/расширить, не сломав?
  • Легко ли покрыть тестами?
  • Проходит ли ревью, линтеры?

Нюансы

«Хорошесть» контекстна: важнее решать задачу и соответствовать команде, чем гнаться за идеалом (баланс с прагматизмом).

Коротко для собеседования

Хороший код: читаемый (понятные имена), простой (KISS), без дублирования (DRY), с единственной ответственностью, слабо связанный, тестируемый, предсказуемый, с обработкой ошибок и единым стилем. Плохой — запутанный, дублированный, хрупкий, с побочными эффектами. Критерий — легко понять, изменить и протестировать.

Другие вопросы раздела