📝 Programming

KISS: Пиши просто, пиши ясно 🎯

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
03.04.2026
⏱️
Время чтения
3 мин
👁️
Просмотров
11
🌱
Уровень
Начальный
🐦 💼 ✈️

Твой код работает? Отлично! Но есть еще один важный критерий — читаемость. Код пишется один раз, а читается сотни раз. Твои коллеги (и ты сам через месяц) должны понимать его с первого взгляда.

🎯 Принцип 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)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

DRY: Не повторяй себя 🔄

Представь: ты пишешь код для взлома 10 систем. Копируешь функцию hacksystem() 10 раз. Потом находишь...

📅 03.04.2026 👁️ 13
📝

Функции: Лучшие практики 🎯

Цель: Научиться писать правильные функции, которые легко читать, тестировать и использовать.

📅 03.04.2026 👁️ 11
📝

Почему комментарии часто излишни в коде? 🤔

Тебе наверняка говорили: "Комментируй свой код!". Но есть секрет: хороший код объясняет себя сам. Комментарии...

📅 03.04.2026 👁️ 9

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!