当使用 if(..) 时,为什么这被认为是一个好的编程实践
When using if(...) , why is this considered a good programming practice?
可能的重复项:
如何检查相等?(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)
这句台词有两个目的:
- 将 0 分配给 x。
- 使条件
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
(最好这样做)
是的,它的可读性较差(恕我直言),但这可以避免分配的常见错误,而不是检查其==
if( 0 = variable ) { // Fail 0 is constant
有趣的事实:有人称之为"尤达条件"
不,你只是习惯于阅读左边的变量名和右边的常量。但实际上它会给你确切的代码,如果你离开
如果 (0=x)
而不是
if(0==x)错误地,它会抛出一个错误,您可以轻松修改,但如果在相反的情况下很难调试
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 试图修复一个错误,该错误不会让我开始编程其余部分
- 在C++中编程,将 3 个数字发送到一个函数,然后计算这 3 个数字的平均函数
- 为什么其中一个斐波那契序列的动态编程实现比另一个更快
- 我已经安装了用于c++编程的升华3,但在编写了一个简单的程序后,我遇到了以下错误
- 我可以在C 中编程一个启动操作员吗?
- 试图使循环仅检查字符串是否仅数字,而在编程中允许的C IM中允许的负数是一个类项目
- 在 C 和 C++ 编程中使用哪一个更好?
- 可视化 在C++编程中编写一个函数星号
- 元编程:动态声明一个新结构
- 检测一个可以使用模板元编程可以采用的函数的最大参数数量
- 以编程方式构建一个叮当作响的AST
- 我可以编程设置ENV使用BAT,然后发出一个过程
- 'Try This'矢量在示例词典中哔哔一个单词。编程原理与实践
- 当我打开一个新对话框时,如何禁止在Qt编程的Windows任务栏中显示对话框
- 元编程:函数定义的失败定义了一个单独的函数
- 嗨,我有一个编程项目,编译程序时出现奇怪的错误
- 删除一个编程添加的面板分隔符在MFC Ribbon Bar
- 编写一个编程语言解释器