Написать работающий код никогда не бывает достаточно. Вы должны написать это удобным и понятным способом. С этой целью Роберт Сесил Мартин определил, как должен выглядеть чистый код. В этой статье я объясню самые важные моменты написания чистого кода.
Чистый код — это тот, который эффективен, прост, удобочитаем и не содержит дубликатов. Вы должны следовать этим инструкциям, потому что в первую очередь легче написать чистый код, чем исправлять плохо написанный код.
Значимые имена
- Имена классов, методов и переменных должны быть осмысленными и четкими, демонстрируя, что они должны делать.
- Ваше имя должно быть произносимым, чтобы облегчить общение между разработчиками.
- Избегайте акронимов или двусмысленных имен, которые сбивают с толку тех, кто читает ваш код.
- Используйте имена, которые представляют системный домен, контекст и проблемы, которые необходимо решить.
- Постоянно используйте концептуальные слова. Если вы, например, используете слово «извлечь», то не используйте такие слова, как «извлечь» или «получить». Придерживайтесь своего соглашения.
- Старайтесь не использовать одно и то же слово для двух целей
Методы
- Методы должны быть читабельными и понятными.
- Такие блоки, как операторы «если и еще» и операторы «пока», должны быть длиной в одну строку.
- Метод должен передавать свое намерение.
- Читая функцию сверху вниз, читатели должны понять, чего вы пытаетесь достичь. Последовательные строки должны быть связаны. Более того, уровень абстракции должен уменьшаться сверху вниз.
- Методы должны быть небольшими и содержать до 20 строк.
- Каждый метод должен делать что-то одно.
- Методы должны передавать работу, которую предлагает их название.
- Оптимальное количество параметров метода равно нулю, после одного и двух. Если у вас нет веской причины, не используйте третий параметр.
- Избегайте побочных эффектов, а это означает, что ваши методы не должны изменять ничего, что не подразумевается именем метода.
- Старайтесь избегать использования выходных аргументов в абстракциях высокого уровня.
- Методы должны либо отвечать на что-то, либо что-то делать, но не то и другое одновременно.
- Избегайте дублирования. Поместите повторяющиеся блоки кода в методы.
Комментарии
- Использование комментариев является признаком того, что написанный вами код недостаточно ясен.
- Никакие комментарии не спасут плохо написанный код.
- Вместо того, чтобы объяснять, что делает метод, дайте соответствующее имя, указывающее, для чего предназначен метод. То же самое относится и к именам переменных.
- Важные моменты в коде можно выразить комментариями.
- Комментарии не должны использоваться, чтобы указать, кто модифицировал код или почему. Контроль версий уже делает это.
- Избегайте комментирования кода, который не будет использоваться, так как это приведет к запахам кода. Просто удалите такие комментарии.
Форматирование
- Не пишите код спагетти. Это трудно читать.
- Классы не должны превышать 500 строк. Меньшие классы могут быть поняты легко.
- Держите хороший лимит символов - около 120- для каждой строки кода.
- Создайте поток кода, последовательно сохраняя связанные строки кода.
- Используйте пробелы между параметрами, операторами и запятыми.
Объекты и структура данных
- Используйте абстракции данных для предоставления интерфейсов, которые позволяют разработчикам манипулировать данными, не зная их реализации.
- Структуры данных образуют интерфейс для манипулирования данными. Они не требуют значительных методов.
Обработка ошибок
- Журнал ошибок с информацией о причинах. Укажите место возникновения ошибки и причину ее возникновения.
- Не возвращайте null в методах; вернуть пустые объекты.
- Не передавайте в методы нулевые параметры; они вызовут NullPointerExceptions.
Модульные тесты
Следуйте правилу F.I.R.S.T для тестирования
Тест должен быть;
- быстрый
- независимый
- повторяемый
- самоутверждающийся
- своевременный
Классы
В Java переменные должны быть в верхней части классов. Порядок различных видов переменных следующий:
i) общедоступные статические постоянные переменные
ii) частные статические переменные
iii) частные экземпляры переменных.
- После переменных классы должны продолжаться с методами.
- Имя класса должно указывать на его назначение.
- У каждого класса должна быть одна обязанность.