Рубрики
Без рубрики

Эффективная Java: Придерживайтесь общепринятых соглашений об именовании

Погружение в главу 68 Эффективной Java. Помеченный как java, эффективный, соглашение, архитектура.

Java существует уже давно. За свою долгую историю были созданы определенные соглашения. Официальный набор соглашений, разумно называемый Спецификация языка Java выступает в качестве официальных языковых соглашений. Эти соглашения охватывают как внешний вид, так и грамматические соглашения.

Первый пункт, который следует рассмотреть, – это структура пакета. Пакеты образуют иерархическую организацию компонентов, разделенных периодами. Компоненты записываются строчными буквами и редко цифрами. Пакеты должны начинаться с доменного имени организации с обратными компонентами (например: com.google , org.apache и т.д.) Двумя исключениями из этого правила являются java и javax пакеты. Компоненты пакета должны быть краткими, при этом рекомендуется использовать сокращения. Каждый компонент должен состоять из одного слова или аббревиатуры. Непосредственными дочерними элементами в иерархии пакета после обратного доменного имени являются подпакеты. Один или несколько уровней вложенных пакетов могут подразделять приложение на разумные части. Почти для всех применений это предпочтительно.

Имена типов классов, интерфейсов, перечислений и аннотаций должны состоять из одного или нескольких слов с заглавной первой буквой, таких как String или BigInteger. Общепринятые сокращения принимаются, но следует избегать нестандартных сокращений. Не существует предписанного стандарта в отношении того, должны ли все аббревиатуры быть прописными в названиях типов или только первая буква аббревиатуры должна быть прописной. Я предпочитаю, чтобы первый символ был прописным, поскольку я думаю, что это облегчает различение разных слов в имени типа.

Имена методов и полей соответствуют тем же соглашениям, что и у классов, за исключением того, что первый символ по соглашению написан в нижнем регистре. Единственным исключением из этого правила являются “постоянные поля” (те, которые являются static final ). Имена этих полей должны быть прописными с подчеркиванием, разделяющим слова (например: NEGATIVE_INFINITY).

Локальные переменные следуют во многом тем же правилам, что и имена полей, но с некоторым смягчением правил. Поскольку область действия переменных меньше, нам не нужно быть такими строгими с правилами. Например, переменная i является приемлемой локальной переменной в цикле for , поскольку она хорошо понятна и является распространенным шаблоном.

Имена параметров типа обычно состоят из одной буквы. Пять наиболее распространенных – это T для произвольного типа, E для типа элемента коллекции,/| K и V для типов ключей и значений для карты и X для исключений. Тип возвращаемого значения функции обычно R . Последовательности произвольных типов могут быть , U , V или T1 , T2 , |/T3 .

Соглашения о грамматических именах менее распространены и более противоречивы. Создаваемые классы обычно именуются существительным в единственном числе или именной фразой, такой как Thread , Приоритетная очередь , Менеджер процессов . Классы утилит, не являющиеся экземплярами, часто называются существительными во множественном числе, такими как Collections или Файлы . Интерфейсы могут быть названы так же, как классы, или как прилагательные, оканчивающиеся на -able или -способный такие, как Runnable |/, Повторяемый или Доступный . Аннотации охватывают множество целей, и, таким образом, их названия могут охватывать различные шаблоны.

Методы, которые выполняют действия, обычно называются глаголом или глагольной фразой, такой как append или нариСуйте изображение . Методы, возвращающие логическое значение s имеют имена, начинающиеся с is и иногда имеет такие как isDigit , isProbablePrime , или имеет братьев и сестер . Когда метод возвращает атрибут объекта, он может быть назван существительным, именной фразой или глагольной фразой. Примерами этого могут быть size ,/| hashCode или get Time . За третьим типом стоит особенно сильный контингент разработчиков. Причина этого в том, что исторически эта форма берет свое начало из в значительной степени устаревшей спецификации JavaBeans . Несмотря на то, что эта конкретная спецификация в значительной степени мертва, все еще существует несколько инструментов, которые поддерживают этот шаблон и даже ожидают его. Некоторые типы методов обрабатываются определенным образом. Примером этого могут быть методы, которые преобразуют тип объекта, часто записываются как to_Type_, такие как toString или toArray . Методы, которые принимают данные и предоставляют другое представление этих данных, также могут быть перечислены как as_Type_, например asList . Наконец, статические фабричные методы часто строятся на словах из , из , значение , экземпляр , getInstance и т.д.

Хотя следование этим соглашениям не улучшит выполнение вашего кода, другим разработчикам Java будет проще поддерживать ваш код. Эта повышенная ремонтопригодность позволит вашему коду снизить затраты на обслуживание и даст больше времени для того, чтобы сосредоточиться на добавлении новых функций.

Оригинал: “https://dev.to/kylec32/effective-java-adhere-to-generally-accepted-naming-conventions-113o”