Как стать автором
Поиск
Написать публикацию
Обновить
30.22

Обобщенный Манифест Чистого Кода (v2025.2.0)

Время на прочтение4 мин
Количество просмотров3.1K

С 31 января по 2 февраля на турбазе под Екатеринбургом прошел первый в истории Иволга Senior Camp — закрытая тусовка для сеньоров и других руководителей, чья работа связана непосредственно с разработкой. 

В течение двух дней ребята из лучших ИТ-компаний общались в неформальной обстановке, делились инсайтами, соревновались в хардкорном программировании, жарили шашлыки и пели под гитару. А вишенкой на этом торте стал хакатон по созданию манифеста чистого кода для генеративных моделей, который прошел при поддержке МТС AI.  

Мысль написать общий документ, который стандартизировал и облегчил бы работу промт-разработчиков, возникла почти сама собой. Концепция чистого кода с легкой руки Робина Мартина завоевала признание среди самых разных разработчиков. И почему бы ее не распространить на взаимодействие с ИИ? Ведь тогда рутинных действий в повседневности программиста будет еще меньше, а времени для по-настоящему интересных задач — больше. 

По общему решению ребят публикуем получившийся документ в свободном доступе. Пользуйтесь: 

### **0. Процесс разработки**

1. **Итеративный подход**:  

   - Генерируй код по одному файлу, ожидай подтверждение "Ready" перед переходом к следующему.  

   - Рефакторинг обязателен при обнаружении нарушений принципов манифеста.???

   - Полная реализация модулей (никаких заглушек или TODO без веских причин).  

---

### **1. Архитектурные принципы**

- **Слоистая архитектура**:  

  - Четкое разделение: API → Domain ← Infrastructure  

  - Запрещено:  

    - Вызов Infrastructure-сервисов напрямую из API слоя.  

    - Размещение бизнес-логики в контроллерах.  

    - Анемичные модели (если у модели нет методов - создай entity).  

- **DDD & Clean Architecture**:  

  - Строгие bounded contexts для доменных моделей.  

  - Пример как делать нельзя: OrderService, вызывающий PayPal API напрямую.

  - Пример как делать можно: TODO - добавить пример из интернета

---

### **2. Стандарты кодирования**  

- **Идиоматичность**:  

  - Соответствие стандартам, например PEP8/Java Code Conventions + строгая типизация (mypy/TypeScript).    

- **Структура кода**:  

  - Все публичные методы/классы — docstrings (формат Google/OpenAPI).  

  - Логирование: структурированные JSON-логи с уровнями DEBUG/ERROR.  

---

### **3. Управление зависимостями**

- **Dependency Injection**:  

  - Внедрение через конструкторы.  

  - Инфраструктурные зависимости (БД, API) изолированы в отдельном слое.  

- **Запрещено**:  

  - Глобальные переменные.

---

### **4. Тестирование** 

- **Пирамида тестов**:  

  - Юниты: не менее 80% покрытия, моки для внешних зависимостей.  

  - Интеграционные: тестирование API + БД.  

  - E2E: ключевые пользовательские сценарии.  

- **Правила**:  

  - Тесты не требуют реальных сервисов (Kafka/S3 и т.п.).

  - Параметризованные тесты для сложных кейсов.

---

### **5. Безопасность и инфраструктура** 

- **Обязательно**:  

  - Валидация входных данных (Pydantic/Schema).  

  - Аутентификация через JWT/OAuth2.  

  - Секреты в environment variables (не в коде!).  

- **Infrastructure as Code**:  

  - Docker + docker-compose для локальной разработки.  

  - Terraform/CloudFormation для прода.  

---

### **6. Документация**

- **OpenAPI**:  

  - Актуальная спецификация с примерами запросов.  

  - Описания статус-кодов и ошибок.  

- **Комментарии**:  

  - Только для неочевидных частей кода.

---

### **7. Quality Gates** 

1. Линтинг: используй линтеры!

2. Проверка типов: обязательно, например при помощи mypy.  

3. Тесты: 100% прохождение перед merge.

4. Security scan: bandit/Snyk/Codescoring.

---

### **8. Антипаттерны** 

- **Архитектура**:  

  - SQL-запросы в контроллерах.

- **Код**:  

  - doTheThing() вместо processOrder().  

  - Запрещено логирование через print().

  - Запрещены магические переменные.

---

### **9. Оптимизация** 

- **Приоритеты**:  

  0. Корректность → 1. Читаемость → 2. Производительность → 3. Краткость.  

- Желательно:  

  - Оптимизация N+1 запросов к БД.

---

### **10. Поддерживаемость**

- **SOLID + DRY**:  

  - Максимум 5 уровней вложенности кода.

  - Вынос дублирующего кода в утилиты/фабрики.

- **Рефакторинг**:

  - Техдолг фиксируется в Issues с меткой refactoring.???

---

**Применение манифеста**: 

1. Используй манифест как чек-лист при генерации.

Будем рады, если вы не только используете манифест в своей работе, но и поделитесь впечатлениями от него в комментариях. Что хорошо, что сомнительно, что можно было бы добавить на ваш взгляд. 

Иволга Senior Camp — закрытая IT-тусовка для сеньоров, техлидов и других руководителей, имеющих непосредственное отношение к разработке. Ближайшая встреча пройдет летом, можно оставить заявку на участие. Организаторы, компания Speach! и члены программного комитета изучат ее и свяжутся с вами, чтобы обсудить детали.

Теги:
Хабы:
Всего голосов 16: ↑3 и ↓13-7
Комментарии16

Другие новости

Информация

Сайт
speach.io
Дата регистрации
Численность
11–30 человек