Классы и переменные - существительные, методы и интерфейсы - глаголы.
Название - существительное по состоянию классу(то, что он содержит).
Отличие между объектом и структурой данных заключается в том, что в объекте содержится состояние и поведение, в структуре данных содержится только состояние.
Закон Деметры: никакой объект не должен раскрывать свою внутреннюю структуру тем, кто к нему обращается. Все манипуляции с объектом должны содержаться в методах данного объекта.
- Класс;
- Документация по классу;
- Поля по убыванию важности, начиная с id;
- Конструкторы;
- public методы;
- private методы;
Добавлять пропуски между концепциями (блоками методов)
- Один метод - одна задача, один уровень абстракции на метод;
- Выносить код из
switchвenum; - Описательные имена (глаголы);
- Чем меньше входных параметров - тем лучше. Если у метода больше 3 аргументов - создавать параметр
Object(Например, объединитьdateStartиdateEndв объектDateRange, после чего для объекта реализовать методы; - Клиентский код не должен создавать флаги, влияющие на серверный код (нарушается инкапсуляция и читабельность кода);
- Менять объект может только
void; - Функция, возвращающее булево значение, имеет приставку
is.
- Legal Info (автор, дата, копирайт);
- Контринтуитивное поведение или нелогичное поведение системы при определенном бизнес-процессе;
- Комментарий к запутанной части кода (перед или внутри
RegEx, или запутанная бизнес-логика); - Предупреждение о последствиях (если это удалить, кусок кода работать не будет; не удалять, иначе будут такие последствия);
- TODO;
- Javadoc - оформление документации к коду. Документация пишется только по
publicметодам; - Использовать метод / переменную вместо комментария (увеличение переменной на определенное значение вывести в метод, в названии пояснить, что связано с бизнес-задачей);
- Использовать исключения, а не коды возврата;
- Ловим только
Exceptions; - Весь код должен входить в блок
try-catch-finally; - Прописывать для каждого слоя свое исключение (
UiException,BusinessLogicException),