Твой код работает? Отлично! Но есть еще один важный критерий — читаемость. Код пишется один раз, а читается сотни раз. Твои коллеги (и ты сам через месяц) должны понимать его с первого взгляда.
🎯 Принцип KISS
KISS = Keep It Simple, Stupid (“Делай проще, глупец”)
Звучит грубо, но смысл благородный: не усложняй без необходимости.
Что это значит?
❌ Плохо:
# Проверка делится ли число на 2
def is_even(n):
# Берем остаток от деления на 2
remainder = n % 2
# Если остаток 0, значит четное
if remainder == 0:
return True # Да, четное
else:
return False # Нет, нечетное
✅ Хорошо:
def is_even(n):
return n % 2 == 0
Вторая версия в 10 раз короче и делает то же самое. Ее легче понять, легче изменить, сложнее сломать.
💬 Проблема комментариев
Когда комментарии вредны?
Многие думают: “Чем больше комментариев, тем лучше”. Это миф!
Плохие комментарии:
❌ Дублируют код:
# Создаем список существ
creatures = []
# Добавляем дракона в список
creatures.append(dragon)
# Выводим длину списка
print(len(creatures))
Эти комментарии ничего не добавляют. Код и так понятен.
❌ Объясняют плохой код вместо того, чтобы его исправить:
# Эта переменная хранит флаг для проверки что игра не окончена
# и что у игрока еще есть карты и что враг тоже жив
flag = True
Лучше назвать переменную нормально:
game_active = True
❌ Устаревают:
# Проверяем что здоровье больше 10
if health > 0: # Изменили логику, забыли поправить комментарий!
print("Жив")
Код изменился, комментарий остался старым. Теперь он врет!
Когда комментарии полезны?
✅ Объясняют “ПОЧЕМУ”, а не “ЧТО”:
# Используем копию списка, чтобы можно было удалять элементы в цикле
for creature in creatures[:]:
if creature["health"] <= 0:
creatures.remove(creature)
✅ Документируют сложную логику:
# Формула урона: базовая атака * (1 + крит_шанс * крит_множитель)
damage = attack * (1 + crit_chance * crit_multiplier)
✅ Предупреждают о подводных камнях:
# ОСТОРОЖНО: не вызывать в цикле — медленная функция!
result = calculate_complex_physics()
🧹 Чистый код вместо комментариев
Вместо комментария “что делает код”, сделай код самодокументируемым:
1. Хорошие имена переменных
❌ Плохо:
# Урон игрока
d = 15
✅ Хорошо:
player_damage = 15
2. Короткие функции
❌ Плохо:
# Сложная логика боя на 100 строк
def battle():
# ... огромная функция ...
✅ Хорошо:
def battle():
choose_attacker()
apply_damage()
check_death()
check_victory()
Каждая функция делает одну вещь и имеет говорящее имя.
3. Разделение на блоки
Вместо комментария “// Начало боя” — просто добавь пустую строку:
player_hand = deal_cards(creatures_library, 3)
enemy_hand = deal_cards(creatures_library, 3)
while len(player_hand) > 0 and len(enemy_hand) > 0:
player_attack(player_hand, enemy_hand)
enemy_attack(enemy_hand, player_hand)
Пустая строка визуально разделяет логику. Читается легче, чем с комментарием.
📋 Чек-лист чистого кода
Перед отправкой на ревью проверь:
✅ Код работает (все функции протестированы)
✅ Нет закомментированных строк (удали старый код)
✅ Нет лишних print() для отладки (если нужны были — убери)
✅ Нет комментариев-дублей (типа # создаем список над list = [])
✅ Переменные названы понятно (player_health вместо ph)
✅ Функции короткие (до 20 строк — идеал)
🎮 Пример из игры
❌ До KISS:
# Функция для проверки мертва ли карта
def check_dead(card):
# Получаем здоровье карты
hp = card["health"]
# Проверяем меньше или равно нулю
if hp <= 0:
# Если да то возвращаем True
return True
else:
# Иначе False
return False
# Проверяем карту игрока
if check_dead(player_card) == True:
# Удаляем карту
player_hand.remove(player_card)
✅ После KISS:
def is_dead(card):
return card["health"] <= 0
if is_dead(player_card):
player_hand.remove(player_card)
Результат:
- Было 13 строк → стало 5 строк
- Убрали все лишние комментарии
- Переименовали функцию (is_dead лучше check_dead)
- Убрали лишнее сравнение == True
💡 Золотое правило
Лучший комментарий — это отсутствие необходимости в комментарии.
Если код требует объяснения — переписывай код, а не добавляй комментарий.
🚀 Что дальше?
- ✅ Проверь свой код: есть ли лишние комментарии?
- ✅ Переименуй непонятные переменные
- ✅ Разбей длинные функции на короткие
- ✅ Удали закомментированный код
Простой код = надежный код! 🎯
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!