Возможный дубликат:
Как проверить на равных? (0 == i) или (i == 0)
Есть ли разница между i == 0 и 0 == i?
Я много раз видел, что люди используют if(condition)
как if(0==x)
вместо if(x==0)
, Говорят, что это хорошая практика, но кто-то может объяснить, почему так? Что это меняет ? Скорее это уменьшает удобочитаемость по моему мнению.
Тот факт, что он снижает читабельность, является чисто субъективным. (Я чувствую то же самое, но это потому, что я имел дело с x==0
больше, чем наоборот, поэтому я к этому привык).
Это сделано для предотвращения случайного назначения:
if(0=x)
выдаст ошибку компилятора,
if(x=0)
не будет.
Лично я не предпочитаю эту практику. но он стал популярным по следующей причине:
Различать assignment operator
и логическое условие.
if(x = 0)
Эта строка служит двум целям:
false
потому что это эквивалентно if(0)
Чтобы избежать этих ошибок, некоторые люди предпочитают if(0 = x)
что приведет к ошибке времени компиляции.
Это просто позволяет избежать опечатки, когда вы наберете if (a = 0)
вместо if (a == 0)
, Используя стиль Yoda, вы получите ошибку компиляции, если написали if (0 = a)
вместо if (0 == a)
,
С другой стороны, это не предотвращает случаи if (b = a)
а также b
другая переменная. Нет серебряной пули.
Лучше использовать -Wall -Wextra
при компиляции. добавлять -Werror
если вы хотите быть параноиком и относиться ко всем предупреждениям как к ошибкам (лучше сделать это)
Да, он менее читабелен (imho), но это позволяет избежать общей ошибки с назначением вместо проверки его ==
if( 0 = variable ) { // Fail 0 is constant
Забавный факт: некоторые называют это «условиями Йоды»
Нет, это просто ваша привычка читать такие вещи, как имя переменной слева и константы справа.
Но на самом деле это даст вам точный код, который, если вы уйдете
если (0 = х)
вместо
если (0 == х)
по ошибке он выдаст вам ошибку, которую вы можете легко изменить, но если в обратном случае ее очень трудно отладить