Перейти к основному содержимому

Культура кода — чек-лист

Разработчику Архитектору
Теория данных (раздел 3)

Структуры в коде — Структуры данных; persistence — ORM.

Перед merge полезно пройтись по списку ниже. Случайный вопрос для разминки — в карточке (обновите страницу, чтобы увидеть другой). Развёрнутые ответы — в основной статье, про сложность и итогах. Теория из гл. 4 — SOLID, ООП, исключения.

Загрузка вопросов…

Культура и цели

  1. В чём заключается основная цель поддержания культуры кода в команде разработчиков?
  2. Какие принципы лежат в основе чистого и понятного программирования?
  3. Что такое читаемость кода и как она влияет на скорость разработки?

Именование и стиль

  1. Каковы основные правила именования переменных, функций и классов?
  2. Как выбирать осмысленные имена для сущностей вместо сокращений или аббревиатур?
  3. Что такое магические числа и почему их использование считается плохим стилем?
  4. Какие стандарты форматирования кода существуют и зачем они важны?
  5. Как настроить автоматическое форматирование кода в среде разработки?
  6. Как адаптировать стандарты качества кода под разные языки программирования?

Принципы проектирования (SOLID, KISS, DRY, YAGNI)

  1. В чём суть принципа DRY (Don't Repeat Yourself) и как его применять на практике?
  2. Как реализовать принцип KISS (Keep It Simple) при проектировании алгоритмов?
  3. Что означает принцип YAGNI (You Aren't Gonna Need It) в контексте написания кода?
  4. Как соблюдать правило единственной ответственности (Single Responsibility Principle) для каждого модуля?
  5. В чём суть принципа открытости/закрытости (Open/Closed Principle) для расширения функционала?
  6. Как применять принцип подстановки Барбары Лисков (Liskov Substitution Principle) в наследовании?
  7. Что такое принцип разделения интерфейсов (Interface Segregation Principle) и зачем он нужен?
  8. Как работает принцип инверсии зависимостей (Dependency Inversion Principle) для снижения связанности?
  9. В чём разница между связностью (cohesion) и сцеплением (coupling) модулей? См. типологию в конструировании.
  10. Как минимизировать циклические зависимости между пакетами и библиотеками?
  11. Какие паттерны проектирования помогают сделать код более гибким и переиспользуемым?
  12. Как избегать антипаттернов, снижающих качество программного продукта?

Функции, сложность, структура

  1. Какие критерии определяют размер функции как хорошего объекта?
  2. Как избегать глубокой вложенности условий в теле функции?
  3. Как организовывать структуру проекта для обеспечения масштабируемости и поддержки?
  4. В чём разница между мономодульной и многомодульной архитектурой организации файлов?
  5. Как разделять слои ответственности (представление, бизнес-логика, доступ к данным)?
  6. В чём опасность использования глобальных переменных в программе?
  7. Как управлять состоянием приложения без создания скрытых зависимостей?
  8. Что такое императивный стиль программирования и когда его уместно применять?
  9. В чём особенности функционального стиля программирования и какие преимущества он даёт?
  10. В чём суть рефакторинга и когда его целесообразно проводить?
  11. Как планировать работу по устранению технического долга в проекте?

Ошибки, тесты, качество

  1. Как правильно обрабатывать ошибки и исключения в коде без потери читаемости?
  2. В чём разница между проверкой данных на входе и внутренней валидацией логики? — см. Проверка и валидация.
  3. Как использовать логирование для отладки и мониторинга работы программы?
  4. В чём роль статического анализатора кода для выявления скрытых дефектов?
  5. Как поддерживать актуальность комментариев к сложным участкам кода?
  6. Почему избыточные комментарии могут вредить пониманию логики программы?
  7. Как писать тесты, которые служат документацией к поведению кода?
  8. В чём суть подхода TDD (Test Driven Development) и как он меняет культуру написания кода?
  9. Как оптимизировать производительность кода без ущерба для его читаемости?
  10. Какие инструменты помогают отслеживать качество кода на протяжении времени?

Ревью и команда

  1. Как проводить код-ревью эффективно и конструктивно для всех участников процесса?
  2. Какие вопросы следует задавать себе перед отправкой кода в репозиторий?
  3. Как формировать культуру взаимопомощи и обмена знаниями внутри команды разработчиков?
  4. В чём роль менторства для повышения общего уровня культуры кода в организации?
  5. Что делать, если требование заказчика противоречит принципам чистой архитектуры?
  6. Как развивать личную дисциплину в соблюдении стандартов написания кода каждый день?

Безопасность

  1. Как писать безопасный код, защищающий данные от утечек и несанкционированного доступа?
  2. Какие практики используются для предотвращения SQL-инъекций и других атак?