Есть ли веская причина, чтобы закодировать ложное логическое значение как "Boolean.FALSE" в java?
Итак, рецензенты кода жалуются на такой код:
boolean myFlag = false;
Они говорят, что это должно быть:
boolean myFlag = Boolean.FALSE;
Это просто фетиш, не использующий ключевые слова или есть веская причина для этого?
Ответ 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, вы можете щелкнуть правой кнопкой мыши FALSE (в Boolean.FALSE) и выбрать "Иерархия открытых вызовов" или "Ссылки" > (опция). Вы не можете сделать это с буквальным FALSE. Но я не знаю, насколько полезно найти все ссылки Boolean.FALSE в ваших циклах разработки.
Любопытно, что, когда я искал ссылки FALSE, он был найден замусоренным по всему ядру ядра (JDK/JRE)! Хотим ли мы это использовать или нет, одно можно сказать наверняка, ребята, которые кодировали и поддерживали Java, сильно его использовали.
Как и в других ответах, в противном случае это необязательно, и вы можете просто использовать литерал FALSE, особенно если важна производительность - избегая лишних служебных операций. В обзорах кодов должен быть установлен приоритет для оптимизированного читаемого/адекватно прокомментированного кода над неоптимизированным читаемым кодом.