Подтвердить что ты не робот

Есть ли веская причина, чтобы закодировать ложное логическое значение как "Boolean.FALSE" в java?

Итак, рецензенты кода жалуются на такой код:

boolean myFlag = false;

Они говорят, что это должно быть:

boolean myFlag = Boolean.FALSE;

Это просто фетиш, не использующий ключевые слова или есть веская причина для этого?

4b9b3361

Ответ 1

Нет, это совершенно бессмысленно. Было бы целесообразно использовать:

// Note capital B
Boolean myFlag = Boolean.FALSE;

чтобы избежать вызова Boolean.valueOf (autoboxing), но в вашем коде нет бокса, и их предложение вводит ненужную операцию unboxing.

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

Ответ 2

Нет ничего плохого в использовании ключевого слова false. На самом деле, в вашем коде вам было бы глупо использовать Boolean.False, так как существует неявное автоматическое разблокирование, которое должно произойти, чтобы назначить его вашему примитивному полю/переменной (Boolean.False - логическое, а не логическое).

Ответ 3

Это не имеет большого смысла в качестве жалобы, поскольку Boolean.FALSE в любом случае распаковывается на false. Но, возможно, спросите людей, говорящих вам изменить код, почему?

Ответ 4

Я могу думать только об одной причине, если вы действительно хотите копать по возможной причине:

В среде IDE, например Eclipse, вы можете щелкнуть правой кнопкой мыши FALSEBoolean.FALSE) и выбрать "Иерархия открытых вызовов" или "Ссылки" > (опция). Вы не можете сделать это с буквальным FALSE. Но я не знаю, насколько полезно найти все ссылки Boolean.FALSE в ваших циклах разработки.

Любопытно, что, когда я искал ссылки FALSE, он был найден замусоренным по всему ядру ядра (JDK/JRE)! Хотим ли мы это использовать или нет, одно можно сказать наверняка, ребята, которые кодировали и поддерживали Java, сильно его использовали.

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