Контрольный список характеристик высококачественного кода

Программист должен постепенно поднимать планку качества в своем коде на максимально возможную высоту и неизменно поддерживать ее, создавая новый код. Именно поэтому очень важно иметь правильное представление о красивом профессиональном коде. В статье собраны ключевые характеристики высококачественного кода. Возьмите их на вооружение и растите как профессионал быстрее.

Корректность поведения

  • Код соответствует требованиям задачи.
  • Работает стабильно, не приводит к зависаниям.
  • Выполняется без ошибок — именно так, как ожидалось.
  • Предусматривает случаи некорректного использования и должным образом их обрабатывает.

Читаемость

  • Легко узнать реализованный алгоритм.
  • Можно оценить, как будет вести себя программа в том или ином частном случае.

Понятность

  • Код легко понимается как его автором, так и сторонним программистом.
  • Можно быстро разобраться в любой странице написанного кода и при необходимости осуществить поддержку (устранить ошибки, оптимизировать, выполнить отладку и др.).

Сопровождаемость

  • Код легко изменить в случае необходимости.
  • Изменение кода достигается минимальными усилиями и не приводит к большому количеству ошибок.

Правильность выбора имен для идентификаторов

Удачно выбраны переменные, константы, методы, параметры, классы, структуры, поля, свойства интерфейсов, структур, перечислений, пространства имен.

Продуманность классов, интерфейсов и иерархий классов

  • Обеспечена хорошая абстракция и инкапсуляция.
  • Правильно используются наследование и полиморфизм.
  • Код прост, может использоваться многократно, сложность минимальна.
  • Обеспечено сильное сцепление и слабая связанность.

Качество проектирования методов

  • Снижена сложность, улучшена читаемость.
  • Выбраны хорошие имена методов и параметров.
  • Обеспечено сильное сцепление и слабая связанность.

Корректность использования переменных, данных, выражений и констант

  • Обеспечена минимальная область видимости и время жизни.
  • Применяются простые выражения.
  • Правильно используются константы.
  • Правильно организованы данные.

Правильность использования управляющих структур

  • Используются простые выражения.
  • Простые условные операторы и простые условия.
  • Хорошо организованны циклы без глубокой вложенности.
  • Код хорошо отформатирован.
  • Отражена логическая структура программы.
  • Хорошо отформатированы классы, методы, блоки, пробелы, длинные строки, присутствует выравнивание и т.д.

Качество документации и комментариев

  • Составлены эффективные комментарии.
  • Код самодокументированный.
  • Используются приемы защитного программирования и исключения.
  • Повсеместно используются приемы защитного программирования.
  • Хорошо организованна обработка исключений.
  • Используются приемы калибровки и оптимизации кода.
  • Приоритет качеству кода вместо хорошей производительности.
  • Приоритет производительности, если критично.

Соответствие корпоративным соглашениям

  • Форматирование, стиль, именование и т.д. соответствуют принятым в компании соглашениям.
  • Используются лучшие из предметно-ориентированных практик.

Тестирование и инспектирование

  • Обеспечена тестируемость кода.
  • Хорошо спроектированы модульные тесты: предусматривают все сценарии использования, высок показатель покрытия кода.
  • Выполнено рецензирование кода.

В заключение

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

Но не стоит и переусердствовать в желании соблюсти все указанные характеристики в любом проекте. Учитывайте реалии рынка и особенности бизнеса. Вопросы качества — это не те вопросы, где есть только чёрное и белое.