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