Написать работающий код никогда не бывает достаточно. Вы должны написать это удобным и понятным способом. С этой целью Роберт Сесил Мартин определил, как должен выглядеть чистый код. В этой статье я объясню самые важные моменты написания чистого кода.

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

Значимые имена

  • Имена классов, методов и переменных должны быть осмысленными и четкими, демонстрируя, что они должны делать.
  • Ваше имя должно быть произносимым, чтобы облегчить общение между разработчиками.
  • Избегайте акронимов или двусмысленных имен, которые сбивают с толку тех, кто читает ваш код.
  • Используйте имена, которые представляют системный домен, контекст и проблемы, которые необходимо решить.
  • Постоянно используйте концептуальные слова. Если вы, например, используете слово «извлечь», то не используйте такие слова, как «извлечь» или «получить». Придерживайтесь своего соглашения.
  • Старайтесь не использовать одно и то же слово для двух целей

Методы

  • Методы должны быть читабельными и понятными.
  • Такие блоки, как операторы «если и еще» и операторы «пока», должны быть длиной в одну строку.
  • Метод должен передавать свое намерение.
  • Читая функцию сверху вниз, читатели должны понять, чего вы пытаетесь достичь. Последовательные строки должны быть связаны. Более того, уровень абстракции должен уменьшаться сверху вниз.
  • Методы должны быть небольшими и содержать до 20 строк.
  • Каждый метод должен делать что-то одно.
  • Методы должны передавать работу, которую предлагает их название.
  • Оптимальное количество параметров метода равно нулю, после одного и двух. Если у вас нет веской причины, не используйте третий параметр.
  • Избегайте побочных эффектов, а это означает, что ваши методы не должны изменять ничего, что не подразумевается именем метода.
  • Старайтесь избегать использования выходных аргументов в абстракциях высокого уровня.
  • Методы должны либо отвечать на что-то, либо что-то делать, но не то и другое одновременно.
  • Избегайте дублирования. Поместите повторяющиеся блоки кода в методы.

Комментарии

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

Форматирование

  • Не пишите код спагетти. Это трудно читать.
  • Классы не должны превышать 500 строк. Меньшие классы могут быть поняты легко.
  • Держите хороший лимит символов - около 120- для каждой строки кода.
  • Создайте поток кода, последовательно сохраняя связанные строки кода.
  • Используйте пробелы между параметрами, операторами и запятыми.

Объекты и структура данных

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

Обработка ошибок

  • Журнал ошибок с информацией о причинах. Укажите место возникновения ошибки и причину ее возникновения.
  • Не возвращайте null в методах; вернуть пустые объекты.
  • Не передавайте в методы нулевые параметры; они вызовут NullPointerExceptions.

Модульные тесты

Следуйте правилу F.I.R.S.T для тестирования

Тест должен быть;

  • быстрый
  • независимый
  • повторяемый
  • самоутверждающийся
  • своевременный

Классы

В Java переменные должны быть в верхней части классов. Порядок различных видов переменных следующий:

i) общедоступные статические постоянные переменные

ii) частные статические переменные

iii) частные экземпляры переменных.

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