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

If (boolean == false) vs. if (! boolean)

Возможный дубликат:
Неплохо ли явно сравнивать с булевыми константами, например. if (b == false) в Java?

В этот образец примера NotePadProvider, я заметил, что автор выбрал форму:

    if (values.containsKey(NoteColumns.CREATED_DATE) == false) {
        values.put(NoteColumns.CREATED_DATE, now);
    }

Over:

    if (!values.containsKey(NoteColumns.CREATED_DATE)) {
        values.put(NoteColumns.CREATED_DATE, now);
    }

Есть ли преимущество первой формы над более логичной?

4b9b3361

Ответ 1

Помимо "удобочитаемости", нет. Они функционально эквивалентны.

( "Чтение" находится в кавычках, потому что я ненавижу == false и нахожу ! гораздо более удобочитаемым, а другие нет.)

Ответ 2

В большинстве случаев READABILITY. При чтении другого кода гораздо более понятным считать НЕ СОДЕРЖАТЬ KEY !values.containsKey(NoteColumns.CREATED_DATE) вместо чтения КОНТЕЙНЕРЫ KEY FALSE (values.containsKey(NoteColumns.CREATED_DATE) == false).

Ответ 3

Это выбор стиля. Это не влияет на производительность кода в меньшей степени, это просто делает его более подробным для читателя.

Ответ 4

Нет. Я не вижу никакого преимущества. Второй - более простой.

btw: Второй стиль найден в каждом углу источника JDK.

Ответ 5

- Здесь больше о coding style, чем о функциональности....

- 1-я опция очень четкая, но затем вторая довольно элегантная... без обид, ее просто мой взгляд..

Ответ 6

Примечание. С помощью ConcurrentMap вы можете использовать более эффективные

values.putIfAbsent(NoteColumns.CREATED_DATE, now);

Я предпочитаю менее подробное решение и избегаю таких методов, как IsTrue или IsFalse или их подобные.

Ответ 7

Первая форма, когда используется с API, который возвращает Boolean и сравнивается с Boolean.FALSE, никогда не будет бросать NullPointerException.

Вторая форма, когда она используется с интерфейсом java.util.Map, также никогда не будет бросать NullPointerException, потому что возвращает Boolean, а не Boolean.

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