При использовании if (…), почему это считается хорошей практикой программирования?

Возможный дубликат:
Как проверить на равных? (0 == i) или (i == 0)
Есть ли разница между i == 0 и 0 == i?

Я много раз видел, что люди используют if(condition) как if(0==x) вместо if(x==0), Говорят, что это хорошая практика, но кто-то может объяснить, почему так? Что это меняет ? Скорее это уменьшает удобочитаемость по моему мнению.

0

Решение

Тот факт, что он снижает читабельность, является чисто субъективным. (Я чувствую то же самое, но это потому, что я имел дело с x==0 больше, чем наоборот, поэтому я к этому привык).

Это сделано для предотвращения случайного назначения:

if(0=x)

выдаст ошибку компилятора,

if(x=0)

не будет.

10

Другие решения

Лично я не предпочитаю эту практику. но он стал популярным по следующей причине:

Различать assignment operator и логическое условие.

if(x = 0)

Эта строка служит двум целям:

  1. Назначает 0 для х.
  2. делает условие false потому что это эквивалентно if(0)

Чтобы избежать этих ошибок, некоторые люди предпочитают if(0 = x) что приведет к ошибке времени компиляции.

2

Это просто позволяет избежать опечатки, когда вы наберете if (a = 0) вместо if (a == 0), Используя стиль Yoda, вы получите ошибку компиляции, если написали if (0 = a) вместо if (0 == a),

С другой стороны, это не предотвращает случаи if (b = a) а также b другая переменная. Нет серебряной пули.

Лучше использовать -Wall -Wextra при компиляции. добавлять -Werror если вы хотите быть параноиком и относиться ко всем предупреждениям как к ошибкам (лучше сделать это)

1

Да, он менее читабелен (imho), но это позволяет избежать общей ошибки с назначением вместо проверки его ==

if( 0 = variable ) { // Fail 0 is constant

Забавный факт: некоторые называют это «условиями Йоды»

0

Нет, это просто ваша привычка читать такие вещи, как имя переменной слева и константы справа.
Но на самом деле это даст вам точный код, который, если вы уйдете

если (0 = х)

вместо

если (0 == х)
по ошибке он выдаст вам ошибку, которую вы можете легко изменить, но если в обратном случае ее очень трудно отладить

0
По вопросам рекламы [email protected]