Соглашения об именовании Java — это своего рода руководящие принципы, которым должны следовать программисты приложений, чтобы создавать последовательный и читаемый код во всем приложении. Если команды не следуют этим соглашениям, они могут коллективно написать код приложения, который будет трудно читать и понимать.
Всегда старайтесь давать всем переменным описательные и лаконичные имена. В результате любой программист будет долго наслаждаться вашим кодом. Опытные программисты уделяют много внимания именованию, чтобы сделать свои программы простыми для понимания.
Java активно использует нотацию Camel Case для именования методов, переменных и т. д., а также нотацию TitleCase для классов и интерфейсов.
Существует два общепринятых соглашения Java, которые используются во всем мире:
Давайте подробно разберем некоторые часто используемые и популярные соглашения об именовании с примерами.
1. Именование пакетов
Имена пакетов должны быть группой слов, начинающихся с доменных имен, состоящих из строчных букв(например, com, org, net и т. д.). Последующие части имени пакета могут отличаться в соответствии с внутренними соглашениями об именовании организации.
package com.howtodoinjava.webapp.controller;package com.company.myapplication.web.controller;package com.google.search.common;
2. Именование классов
В Java имена классов обычно должны быть существительными, с заглавной буквы, при этом первая буква каждого отдельного слова должна быть заглавной. Например:
public class ArrayList {}public class Employee {}public class Record {}public class Identity {}
3. Именование интерфейсов
В Java имена интерфейсов, как правило, должны быть прилагательными. Интерфейсы должны быть в заглавном регистре с первой буквой каждого отдельного слова заглавной. В некоторых случаях интерфейсы могут быть также существительными, если они представляют семейство классов, например, List и Map.
public interface Serializable {}public interface Clonable {}public interface Iterable {}public interface List {}
4. Методы именования
Методы всегда должны быть глаголами. Они представляют действие, а имя метода должно четко указывать на действие, которое они выполняют. Имя метода может быть одним или 2-3 словами, в зависимости от необходимости четко представлять действие. Слова должны быть в нотации camel case.
public Long getId() {}public void remove(Object o) {}public Object update(Object o) {}public Report getReportById(Long id) {}public Report getReportByName(String name) {}
5. Именование переменных
Все имена переменных параметров экземпляра, статического и метода должны быть в нотации camelcase. Они должны быть короткими и достаточными для описания их назначения. Временные переменные могут быть одним символом, например счетчик в циклах.
В Java есть некоторые правила именования переменных:
- Имена чувствительны к регистру;
- имя может включать буквы Unicode, цифры и два специальных символа($, _);
- имя не может начинаться с цифры;
- Имя не должно быть ключевым словом(class, static, int и т. д. являются недопустимыми именами).
- В имени переменной не допускаются пробелы.
Вот некоторые допустимые имена переменных:
public Long id;public EmployeeDao employeeDao;private Properties properties;for(int i = 0; i < list.size(); i++) {}
А вот некоторые недействительные:
@ab, 1c, !ab, class
Начиная с Java 9, одиночный символ _ является недопустимым именем переменной, но _a и __(двойной _ ) являются допустимыми именами.
Всегда выбирайте имя, которое имеет смысл, например, score имеет больше смысла, чем s, хотя оба они допустимы.
6. Соглашения об именовании констант
Константы Java должны быть написаны ЗАГЛАВНЫМИ буквами, а слова разделяются символом подчеркивания(«_»). Обязательно используйте модификатор final с константными переменными.
public final String SECURITY_TOKEN = "...";public final int INITIAL_SIZE = 16;public final Integer MAX_SIZE = Integer.MAX;
7. Именование универсальных типов
Имена параметров типов должны состоять из отдельных заглавных букв. Обычно рекомендуется использовать букву «T» для типа. В классах JDK E используется для элементов коллекции, S — для загрузчиков служб, а K и V — для ключей и значений карты.
public interface Map <K,V> {}public interface List<E> extends Collection<E> {}Iterator<E> iterator() {}
8. Именование перечислений
Подобно константам классов, имена перечислений должны состоять только из заглавных букв.
enum Direction {NORTH, EAST, SOUTH, WEST}
9. Именование аннотаций
Имена аннотаций следуют заглавным регистром. Они могут быть прилагательными, глаголами или существительными в зависимости от требований.
public @interface FunctionalInterface {}public @interface Deprecated {}public @interface Documented {}public @Async Documented {public @Test Documented {}
10. Заключение
В этой статье мы обсудили соглашения об именовании в Java, которых следует придерживаться для единообразного написания кода, что делает его более читаемым и удобным для поддержки.
Соглашения об именовании — это, пожалуй, первая лучшая практика, которой следует следовать при написании чистого кода на любом языке программирования.