Я предполагаю, что ||
является опечаткой, а вы имели в виду &&
:)
Чтобы ответить на ваш вопрос: это зависит.
Имеет ли смысл jamesBlunt
когда-либо быть нулевым?Если нет, то было бы лучше иметь что-то вроде этого:
void buyARecord(Artist jamesBlunt) {
if (jamesBlunt == null) {
throw new IllegalArgumentException("James should never be null!");
}
}
Если имеет смысл для jamesBlunt
быть нулевым, тогда ваш подход в порядке, предполагая null
и isReallyBad
означать то же самое семантически.Если они означают разные вещи семантически, то вам, вероятно, не следует объединять их в одну строку.
Вы должны быть осторожны на других языках.Многие (Java, C ++, C # и т. Д.) Будут вести себя одинаково, но некоторые могут оценивать справа налево или оценивать лениво.Будьте особенно внимательны с функциональными языками, такими как Lisp и Scheme, поскольку они, как правило, ведут себя иначе, чем объектно-ориентированные языки, такие как Java и C #.