«Код читается в 10 раз чаще, чем пишется» — Роберт Мартин, автор Clean Code. Чистый код — это уважение к коллегам и к себе в будущем. Разберём принципы, которые действительно работают.
Именование: самый важный навык
# naming.py
# Плохо: def f(d, n): return [x for x in d if x['a'] > n] # Хорошо: имена объясняют намерение def filter_users_above_age(users, min_age): return [ user for user in users if user['age'] > min_age ]
Принцип единственной ответственности (SRP)
Функция или класс должны делать одну вещь и делать её хорошо. Если вы затрудняетесь кратко описать, что делает функция — она делает слишком много.
# srp.py
# Плохо: функция делает три разные вещи def process_order(order): validate_order(order) # валидация save_to_db(order) # сохранение send_email(order) # уведомление # Хорошо: три отдельные функции, одна координирующая def process_order(order): validate(order) save(order) notify(order)
// DRY, KISS, YAGNI
DRY (Don't Repeat Yourself): дублирование — источник ошибок. KISS (Keep It Simple): простое решение лучше сложного. YAGNI (You Aren't Gonna Need It): не добавляйте функциональность «на будущее» — вы скорее всего не будете её использовать.
Магические числа и строки
# constants.py
# Плохо: что означает 86400? if user.age > 18 and session.duration < 86400: allow_access() # Хорошо: константы говорят за себя LEGAL_AGE = 18 SECONDS_PER_DAY = 86400 if user.age > LEGAL_AGE and session.duration < SECONDS_PER_DAY: allow_access()
Комментарии: когда нужны, когда вредны
Хороший код читается как проза — без комментариев. Комментируйте «почему», а не «что». Комментарий, объясняющий «что делает этот код», — сигнал, что код нужно упростить.
# comments.py
# Плохой комментарий — дублирует код: i += 1 # увеличить i на 1 # Хороший комментарий — объясняет "почему": # Начинаем с 1, а не с 0, чтобы пропустить заголовок for i in range(1, len(rows)):