Должен “статический заключительный Регистратор” быть объявленным в ВЕРХНЕМ РЕГИСТРЕ?

У вас была возможность попробовать это с помощью политики отметок времени, извините, я не пробовал это самостоятельно, но я считаю, что с 2.9.0 вы должны взглянуть на использование политики вместе с чтением KafkaIO.

https://beam.apache.org/releases/javadoc/2.9.0/org/apache/beam/sdk/io/kafka/KafkaIO.Read.html#withTimestampPolicyFactory-org.apache .beam.sdk.io.kafka.TimestampPolicyFactory-

232
задан Community 23 May 2017 в 02:10
поделиться

8 ответов

Ссылка регистратора - это не константа, а последняя ссылка, и НЕ должна быть в верхнем регистре. Константа VALUE должна быть в верхнем регистре.

private static final Logger logger = Logger.getLogger(MyClass.class);

private static final double MY_CONSTANT = 0.0;
288
ответ дан 23 November 2019 в 03:34
поделиться

Я предпочитаю 'регистратор', т.е. нижний регистр. Причина не состоит в том, что это - константа или не константа (изменяемый или неизменный). Если бы мы использовали бы то обоснование, мы должны были бы переименовать переменную, если мы изменяем платформу журналирования (или если платформа изменяет переменчивость регистраторов).

Для меня, другие причины более важны.

  1. регистратор А является теневым объектом в классе и не должен быть очень видным, поскольку он не реализует основную логику. Если мы используем 'РЕГИСТРАТОР', это - приманка для глаз в коде, который привлекает слишком много внимания.

  2. Иногда регистраторы объявляются на уровне экземпляра (т.е. не столь статичные) и даже введены как зависимость. Я не хотел бы изменять свой код, если я решаю изменить способ, которым я получаю регистратор. Устойчивость кода wrt. это (гипотетический во многих случаях) изменение является другой причиной, почему я предпочитаю нижний регистр.

0
ответ дан 23 November 2019 в 03:34
поделиться

Если вы используете автоматизированный инструмент для проверки своих стандартов кодирования, и он нарушает указанные стандарты, то его или стандарты следует исправить. Если вы используете внешний стандарт, исправьте код.

Согласно соглашению в Sun Java, общедоступные статические константы используются в верхнем регистре. Очевидно, что регистратор не является постоянным, но представляет собой изменчивую вещь (иначе не было бы смысла вызывать на нем методы в надежде, что что-то произойдет); не существует специального стандарта для непостоянных полей final.

10
ответ дан 23 November 2019 в 03:34
поделиться

Если вы погуглите, вы можете обнаружить, что в некоторых случаях логгеры не определены как static final. Добавьте к этому быстрое копирование и вставку, и это может объяснить это.

Мы используем LOGGER во всем нашем коде, и это соответствует нашему соглашению об именах (и наш CheckStyle доволен этим).


Мы даже пошли дальше, воспользовавшись строгим соглашением об именах в Eclipse. Мы создаем новый класс с шаблоном кода:

    // private static final Logger LOGGER = Logger.getLogger(${enclosing_type}.class);

Регистратор закомментирован, так как изначально он нам не нужен. Но если он нам понадобится позже, мы просто раскомментируем его.

Затем в коде мы используем шаблоны кода, которые ожидают присутствия этого регистратора. Пример с шаблоном try-catch:

    try {
      ${cursor} or some other template
    } catch (Exception t) {
      LOGGER.error("${methodName} ${method parameters}", t);
    }

У нас есть еще несколько шаблонов, которые его используют.

Строгие правила позволяют нам быть более продуктивными и согласованными с шаблонами кода .

7
ответ дан 23 November 2019 в 03:34
поделиться

Лично я считаю, что в верхнем регистре он выглядит очень большим. Более того, поскольку это класс, который напрямую не связан с поведением класса, я не вижу серьезной проблемы в использовании logger вместо LOGGER . Но если вы собираетесь быть строго педантичным, используйте LOGGER .

6
ответ дан 23 November 2019 в 03:34
поделиться

Если ваши стандарты кодирования - если они у вас есть - говорят, что они должны быть прописными, тогда да.

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

Кстати: я предпочитаю "LOGGER"; -)

1
ответ дан 23 November 2019 в 03:34
поделиться

Обычно константы пишутся в верхнем регистре.

Регистраторы, однако, не должны быть статическими, а искать каждое «новое» в содержащем классе при использовании фасада slf4j. Это позволяет избежать некоторых неприятных проблем с загрузчиком классов, особенно в веб-контейнерах, а также позволяет структуре регистратора выполнять особые действия в зависимости от контекста вызова.

3
ответ дан 23 November 2019 в 03:34
поделиться

Не забывайте, что PMD будет учитывать комментарий с

// NOPMD

в нем. Это заставит PMD пропустить строку из своих проверок, что позволит вам выбрать любой стиль, который вы хотите.

4
ответ дан 23 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: