Заключительное соглашение об именовании переменных в классе Java Singleton - PullRequest
0 голосов
/ 05 мая 2018

Я понимаю, что переменные уровня экземпляра final соответствуют соглашениям о присвоении имен для верблюдов, но мне было интересно, должно ли это относиться и к классу Singleton.

Вы бы обработали final в классе Singleton как константу и следовали бы соглашению об именовании констант следующим образом:

private final SomeObject SOME_OBJECT;

ИЛИ, назовите ли вы его в случае верблюда, следуя обычным правилам именования переменных?

private final SomeObject someObject;

Это продолжает появляться в нескольких обзорах кода, и у меня всегда есть некоторая серая область. Ценю любые мысли по этому поводу.

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

В соответствии с типичными стандартами кодирования Java стиль идентификатора ALL_CAPS зарезервирован для static final констант (и enum констант ...). В вашем случае это переменная final, но не static, поэтому исключение из обычных правил для переменных не применяется.

Это моя интерпретация, и я думаю, что самая распространенная интерпретация. Это не единственная интерпретация. Однако вы / ваша команда можете по-разному интерпретировать условные обозначения или даже полностью игнорировать их 1 .

Самое главное, чтобы вы были едины в вашей общей кодовой базе вашей / вашей команды / организации.


1 - ... хотя последний будет неразумным , ИМО,

0 голосов
/ 05 мая 2018

Эта тема больше основана на мнении сообщества, чем на установленном стандарте.

Если это на уровне класса, и он является окончательным, и есть только один экземпляр, если вы используете его как константу, по моему мнению, я бы использовал Underscore, поскольку это в основном константа, но это инициализируется во время выполнения.

class AClass {
    private final SomeObject SOME_OBJECT;
    private initInstance() {
        SOME_OBJECT = ...;
    }
    ...
}

Это может быть полезной ссылкой: https://softwareengineering.stackexchange.com/questions/252243/naming-convention-final-fields-not-static

К чему эта ссылка сводится к тому, что хотя любой ответ будет самоуверенным, хорошей эвристикой будет спросить себя: «Это ведет себя как константа? Или оно ведет себя как поле однократной записи?»

Если это константа, которая создается во время выполнения, DO_THIS.

Если это поле, в которое вы пишете один раз, но манипулируете позже, doThis.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...