Каждый файл должен начинаться с заголовка в формате:
"""ТИП: краткая смета"""
Типы файлов:
VIEW— модули с классамиarcade.View(экраны игры)MODULE— основные модули и пакетыUTILS— вспомогательные модули, утилитыCONFIG— конфигурационные файлыMODEL— классы данных, модели
- Заголовок файла
- Импорты (стандартные, сторонние, локальные)
- Константы
- Классы
- Функции
- Точка входа (если это главный файл)
Используйте стандартные аннотации для задач и проблем:
# TODO: Добавить поддержку нескольких слоев тайлов
# FIXME: Исправить утечку памяти при частом зуммировании
# HACK: Временное решение для совместимости со старой версией
# NOTE: Важное замечание по архитектуре
# OPTIMIZE: Возможность улучшения производительностиПравила:
- Все специальные комментарии пишите на английском языке
- Указывайте дату и автора для FIXME/HACK:
# FIXME(v.ivanov 15.12.2023): ... - Регулярно проверяйте и актуализируйте TODO-списки
class GameView(arcade.View):
class PlayerCharacter(arcade.Sprite):
class ResourceManager:def calculate_damage(self):
def load_textures():
def setup_scene():def _process_collision(self): # Внутренний метод класса
def _validate_data(data): # Внутренняя функция модуляSCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
DEFAULT_FPS = 60player_health = 100
current_score = 0
is_game_active = True- Объясняйте почему, а не что (код должен говорить сам за себя)
- Избегайте тривиальных комментариев:
x += 1 # Увеличиваем x на 1 - Используйте комментарии для неочевидных решений и сложной логики
- Отступы: 4 пробела
- Пустые строки для разделения логических блоков
# Стандартная библиотека
import os
import sys
from typing import List, Optional
# Сторонние библиотеки
import arcade
import numpy as np
# Локальные модули
from utils.helpers import load_config
from .constants import SCREEN_SIZE- Одна функция — одна ответственность
- Не более 3-4 параметров на функцию (используйте dataclasses для сложных случаев)
- Четкие и понятные названия
# Правильно
try:
config = load_config(path)
except FileNotFoundError:
logger.error(f"Конфиг не найден: {path}")
config = get_default_config()
except json.JSONDecodeError as e:
raise ConfigError(f"Ошибка парсинга конфига: {e}")
# Неправильно
config = load_config(path) # Может упасть без пояснений# Плохо
if x > 100:
player.health = 100
# Хорошо
MAX_PLAYER_HEALTH = 100
if x > MAX_PLAYER_HEALTH:
player.health = MAX_PLAYER_HEALTH# === комментарий, дающий сводку большого блока кода
# - комментарий, объясняющий блок кода, функцию
def setup() -> Optional[bool]:
x = load('map.json') # комментарий, поясняющий строку
return True
def start(map: Map) -> Map:
return map.__init__()
# -- комментарий к классу
class MapConfig:
def __init__(self):
pass