Нет семанти c Разница
if (null != thread) {
thread.interrupt();
}
Почему в противном случае яркие люди в Google написали нулевую проверку таким обратным способом, остается догадкой. Я согласен с вами, что его труднее читать, чем естественное thread != null
.
Нет никакого выигрыша от обратной записи. Семантика точно такая же.
Обратная запись условия if
известна как условие Йода . Условия Yoda обсуждаются, некоторые говорят, что при некоторых обстоятельствах они имеют место в некоторых языках программирования (например, C). В случае ==
вместо !=
для сравнения вы можете прочитать некоторые аргументы в ранее связанном дубликате (я повторяю ссылку внизу). В Java можно использовать искомый аргумент в случае, подобном следующему:
boolean b;
if (b == false) {
// Do something
}
Представьте, что программист из Pascal или другого языка программирования, который использует один =
для сравнения и положить сингл =
здесь по ошибке. Это изменит смысл назначения false
на b
и никогда не будет выполнять условный код. Таким образом, аргумент гласит, что при написании false == b
компилятор поймает такую ошибку для вас, что является явным преимуществом. Однако:
Большинство компиляторов и IDE все равно улавливают ошибку. Например, если я добавлю один =
в приведенный выше оператор if
, мое Затмение скажет
Возможное случайное назначение вместо сравнения. Выражение условия не должно сводиться к присваиванию
Оператор if
обычно записывается следующим образом, что исключает любые содержательные дебаты об условии Йоды и является также обычно рекомендуется:
if (! b) {
// Do something
}
Итак, возвращаясь к вашему вопросу, я предполагаю: программист в Google имел привычку писать условия Йоды типа null == thread
и по ложной аналогии расширил его на null != thread
тоже.
Так не имеет ли порядок операндов! = семантика?
Ради полноты, когда я говорю, что thread != null
и null != thread
имеют та же семантика, я говорю об этом цитируемом коде. В случае, например, someObj.foo() != anotherObj.bar()
порядок накладывает порядок двух вызовов метода. Если оба метода имеют побочные эффекты, которые как-то мешают, порядок применения этих побочных эффектов может иметь значение в некоторых случаях.
Ссылки