2010-09-07 2 views
3

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

Я читаю эту книгу и также видел различные примеры по сети, где порядок аргументов в операции сравнения отменен, и мне интересно, есть ли причина для этого или просто потому, что он выглядит «круто», и делает то же самое.

Пример:

Я бы код:

if(bool_variable == YES) 

, когда я увидел в этой книге и в различных примерах

if(YES == bool_variable) 

Пояснения?

Спасибо тонну!

+0

Отформатируйте свой код в следующий раз (отступ 4 пробела или используйте кнопку 101010). –

ответ

6

Some people like yoda conditions потому что они могут помочь вам найти ошибки, где вы случайно начинали = вместо ==. Например:

if (var = YES) 

будет скомпилирован, но, вероятно, не работает так, как вы этого хотите. Написание его наоборот:

if (YES = var) 

вызовет ошибку времени компиляции. Я лично не люблю эту конструкцию, но, по-моему, каждому свое.

+3

И больше не нужно делать подобные вещи с помощью современного компилятора, который может предупредить, когда вы совершите эту ошибку. И GCC, и Clang обладают этой способностью. –

+0

+1 @Peter. «Я думаю, что предлагать круглые скобки вокруг присваивания условно» или что-то в этом роде. –

+0

Спасибо, что просветили меня! – schone

0

У Carl есть - программист, который ставит постоянную слева, будет защищен компилятором.

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

Я лично всегда ставил постоянную сторону для удобства чтения, но для каждого из них.

Смежные вопросы