Есть ли прагматическая причина использовать «if (0 == p)» вместо «if (! p)»? - PullRequest
21 голосов
/ 04 марта 2011

Я склонен писать операторы if, используя оператор логического отрицания:

if (!p)
    some_code();

Некоторые люди вокруг меня склонны использовать явное сравнение, поэтому код выглядит так:

if (FOO == p)
    some_code();

, где FOO является одним из false , FALSE , 0 , 0.0 , NULL и т. Д.

Я предпочитаю короткую форму, потому что она:

  • operator!= дружелюбная
  • generic programming дружелюбная
  • лаконичная (и даже красивее , как по мне)

Каковы прагматичные преимущества написания этого иначе (если есть)?

Ответы [ 12 ]

0 голосов
/ 04 марта 2011

С помощью if (0 == p) вы заставляете сравнение вводить это «if scope» в этом случае.Я имею в виду, будет ясно, что вы хотите сделать это в случае p is equals 0.При использовании (!p) не ясно, что вы хотите знать.Это может быть null, false и т. Д.

0 голосов
/ 04 марта 2011

единственная прагматическая причина, которую я вижу, заключается в том, что во втором случае тип значений, рассматриваемых для сравнения, является более явным (es. Foo == null foo - это тип ponter,! Foo не может сказать, является ли он указателем, бул, и т.д.)

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