我倾向于使用逻辑否定运算符编写if语句:
if (!p)
some_code();
Run Code Online (Sandbox Code Playgroud)
我周围的一些人倾向于使用显式比较,因此代码看起来像:
if (FOO == p)
some_code();
Run Code Online (Sandbox Code Playgroud)
其中FOO是一个假,FALSE,0,0.0,NULL,等
我更喜欢简短形式,因为它是:
operator!= 友好 generic programming 友好什么是务实的(如果有的话),否则写这个的好处是什么?
Tro*_*our 23
为了对比@ Erik的答案,我会说!用于可读性.如果你发现你正在俯瞰它,那就试试你的眼睛吧.下一步是什么?避免1,使用3 - 2而不是?
Eri*_*rik 13
使用(0 == p)或(p == 0)可读性.这!是比较容易的第一眼,而不是忽视== 0
使用(0 == p),如果你有忽视编译器警告的习惯,想知道当您使用=,而不是==.
cor*_*iKa 11
这取决于p代表什么.
如果p代表布尔/逻辑值,那么(!p)似乎最合适 - 通常不鼓励与"FALSE"进行比较.我不认为这有太大的争议.
如果p代表一个值,就像一个计数器,那么(p == 0)或(0 == p)似乎是合适的.(两者之间通常存在激烈的争论.我发现第一个更具可读性,但第二个避免了一些非常严重的错误.)除了两个选项中哪一个更好,我不认为这是一个辩论(如在,它应该比较为0.)
如果p代表指针,那么你有一些问题.一个称职的C++程序员应该知道它(!p)会告诉你它是否为空.然而,这种可读性的想法是一个灰色地带,我认为这是一个备受争议的争论.
有人声称,实用的好处是,如果你明确地与NULL,FALSE,0等进行比较,程序员会发现它更容易理解,而逻辑运算符可能会让那些不理解隐式转换和布尔值如何工作的人感到困惑. C/C++.
(免责声明:我自己并不赞同这种观点.if (p) ...并且if (!p)...是用C和C++表达这种观点的惯用方法,而那些无法理解它们的程序员没有接触C或C++代码的业务.Heath Hunnicutt的评论已经过时了.)
| 归档时间: |
|
| 查看次数: |
3715 次 |
| 最近记录: |