Я вижу, что какой-то код в Nimbus выглядит так:
if (nil == someObject)
но я обычно печатаю:
if (someObject == nil)
Есть ли различия в этих утверждениях?
Я вижу, что какой-то код в Nimbus выглядит так:
if (nil == someObject)
но я обычно печатаю:
if (someObject == nil)
Есть ли различия в этих утверждениях?
Технически нет. Первый, Нимбус, использует то, что ласково называется "Условия Йоды". "а>.
Название игры здесь защищает от дурака. Смотрите, проблема в том, что это:
if (someObject = nil) // SETS someObject to nil
полностью действителен, всего в одном символе от == nil
, и его очень легко пропустить. Однако, если вы попытаетесь сделать это:
if (nil = someObject)
ваш компилятор взбесится, предотвращая проблему.
Лично я ненавижу условности Йоды, так как считаю, что их трудно читать. Это означает, что нужно быть очень осторожным с моим кодом, но эй, мне от этого лучше, верно? Здесь все сводится к стилю, так что выбирайте то, что вам удобнее.
О, и если вы используете Xcode, это почти спорный вопрос. Если вы проверите этот вопрос, вы увидите, что Xcode теперь предупреждает вас, если вы пытаетесь выполнить задание в if
без лишних скобок. Это,
if (someObject = nil) // throws a warning, whereas
if ((someObject = nil)) // does not
что делает проблему гораздо труднее пропустить.
No.
(Дополнительное бла-бла-бла для SO минимальных правил публикации. Разве они не были полезны?)
Они функционально одинаковы, это просто проблема стиля кодирования.
Раньше ваш компилятор не предупреждал вас, если вы пропустили знак равенства.
if (someObject = nil)
Вероятно, не делает то, что вы хотите. Но если их инвертировать:
if (nil = someObject)
тогда компилятор будет жаловаться.
В наши дни это, вероятно, не имеет никакого значения.
Нет, но код ниже более удобочитаем.
Слева: выражение «допрашиваемый», значение которого постоянно меняется.
Правая часть: сравниваемое выражение, значение которого более постоянно.
Единственная разница в настоящее время состоит в том, что вторая форма более читабельна (или, может быть, она субъективна, и только я предпочитаю ее).
if (nil == someObject && someObject == nil) NSLog(@"woohoo!");
- person esqew   schedule 16.08.2012