Стандарт кодирования Null Check
У меня есть сомнения относительно стандарта кодирования нулевой проверки.
Я хочу знать разницу между
if(a!=null)
и
if(null!=a)
какой из них лучше, какой из них использовать и почему?
Ответы
Ответ 1
Оба одинаковы в Java, так как только логические выражения могут быть внутри if. Это просто предпочтение стиля кодирования программистом, и большинство из них используют null != a
.
null != a
- старая практика в языках программирования, таких как Java, С++ (называемых условиями Yoda).
Поскольку это действительно так, напишите if (a = null)
и случайно присвойте null
a
, поэтому запись null
сначала защищает, чтобы эта авария не происходила.
Ответ 2
Нет никакой разницы. Но первое является более распространенным явлением. Второе также называется "Условия Йоды" из-за его неестественной "грамматики".
Как только я работал над проектом, в котором руководство по кодированию должно было использовать if (null != a)
, потому что они думали, что разработчику проще понять, что постоянное значение должно всегда быть первым (как в CONSTANT_VALUE.equals(variable)
. раздражает меня.
Ответ 3
Они оба одинаковы. Это зависит от вашего стиля кодирования.
Ответ 4
С точки зрения компилятора они точно такие же. Но первая форма более читаема, поэтому я бы посоветовал вам использовать ее.
Ответ 5
Нет разницы между ними, если оператор работает на основе результата выражения
так что напишите либо if(a!=null)
, либо if(null!=a)
будет выдавать true или false, тогда результат будет оценен.
Так что не важно, что вы пишете, что вам нравится
Ответ 6
Оба они одинаковы. Хотя первый вариант является общим, второй вариант полезен, если вы знаете, что первая переменная не является нулевой
Пример "some value".equals(your_variable)
, некоторым значением может быть любое значение, которое, как вы знаете, не равно нулю. Это позволит избежать NPE, если your_variable
null
.
String str = "somevalue";
if(str != null && str.equals("somevalue")) { }
if("somevalue".equals(str)) { }
Оба условия будут одинаковыми, если str
равно null
или нет.