если (ноль! = переменная), почему нет, если (переменная! = ноль) - PullRequest
4 голосов
/ 13 февраля 2011

Привет В нашей компании они придерживаются строгого правила сравнения с нулевыми значениями. Когда я кодирую if (variable! = Null) в обзоре кода Я получаю комментарии, чтобы изменить его на if (null! = Variable) Есть ли какой-либо удар по производительности для приведенного выше кода? Если кто-нибудь объясняет, высоко ценится.

Заранее спасибо

Ответы [ 4 ]

11 голосов
/ 13 февраля 2011

Я не вижу никаких преимуществ в соблюдении этого соглашения.В C, где логические типы не существуют, полезно писать

if (5 == variable)

вместо

if (variable == 5)

, потому что если вы забудете один из знаков eaqual, вы получите

if (variable = 5)

, который присваивает 5 переменной и всегда принимает значение true.Но в Java логическое значение является логическим.А с! = Нет никаких оснований.

Тем не менее, один хороший совет - писать

if (CONSTANT.equals(myString))

вместо

if (myString.equals(CONSTANT))

, потому что это помогаетизбегая NullPointerExceptions.

Мой совет - спросить об обосновании правила.Если их нет, зачем им следовать?Это не помогает читабельности.

3 голосов
/ 13 февраля 2011

Это «остатки» от старых стандартов C-кодирования.

выражение if (var = null) будет компилироваться без проблем.Но это на самом деле присваивает переменной значение null, что делает что-то совершенно другое.Это было источником очень досадных ошибок в программах на Си.

В Java это выражение не компилируется, и поэтому это скорее традиция, чем что-либо еще.Это никогда не преследует никакой цели (кроме настроек стиля кодирования)

3 голосов
/ 13 февраля 2011

Нет разницы в производительности - причина в том, что если вы привыкнете писать (null == somevar) вместо (somevar == null), то вы никогда не будете случайно использовать один знак равенства вместо двух, потому что компилятор не допустит этого, где это позволит (somevar = null). Они просто расширяют это до !=, чтобы сохранить его согласованным.

Я лично предпочитаю (somevar == null) сам, но я вижу, откуда они.

3 голосов
/ 13 февраля 2011

Это никак не связано с производительностью.Он используется для предотвращения случайного назначения вместо сравнения.Назначение null = var не имеет никакого смысла.Но в Java var = null также не будет компилироваться, поэтому правило переворачивать их больше не имеет смысла и только делает код менее читабельным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...