If statement &引用;“数字行”;比较方式
我最近在《代码完成》中读到,处理涉及数字的表达式的推荐方法是将它们像数字行一样排序 本书有两个例子:If statement &引用;“数字行”;比较方式,if-statement,code-formatting,If Statement,Code Formatting,我最近在《代码完成》中读到,处理涉及数字的表达式的推荐方法是将它们像数字行一样排序 本书有两个例子: if ( (MIN_ELEMENTS <= i) && (i <= MAX_ELEMENTS) ) if ( (i < MIN_ELEMENTS) || (MAX_ELEMENTS < i ) ) if((MIN_ELEMENTS我认为这不是一种天生优越的方法。优点在于在整个代码中使用相同的表达式,使代码在习惯后阅读速度更快。我认为应该按照您期望的阅读
if ( (MIN_ELEMENTS <= i) && (i <= MAX_ELEMENTS) )
if ( (i < MIN_ELEMENTS) || (MAX_ELEMENTS < i ) )
if((MIN_ELEMENTS我认为这不是一种天生优越的方法。优点在于在整个代码中使用相同的表达式,使代码在习惯后阅读速度更快。我认为应该按照您期望的阅读方式编写
因此,我将这样做:
if (i > MIN_ELEMENTS &&
i <= MAX_ELEMENTS)
if(i>MIN_)元素&&
我我认为最初的动机来自于在同一个逻辑表达式中进行多个比较。引用的两个示例都是在范围的上下限之间进行比较。这种排序方法在这些情况下可能有价值
但是,我认为,如果您正在测试单个条件,例如m\u Health>BOSS\u HALF\u Health
,则不一定适用。在这种情况下,您所做的比较是某个(变量)是否大于其他某个。这是完全合乎逻辑的,不需要以任何特定方式排序
如果你总是以“数字行”的方式排列比较,你甚至不需要
或=
比较运算符。它们的存在有很好的理由。史蒂夫·麦康奈尔的工作非常出色,但有一点我不同意他的观点。这可能是你的一个原因
如果你觉得这会让你的代码变得不那么清晰,那么不要仅仅因为Steve McConnell认为这是一种方法就这么做。我想最初的目的只是养成一种习惯
语言只是一种熟悉的词语排列。一旦它成为一种习惯,
你会习惯的
如果你能训练你的大脑阅读:
if ( CONST == i ) //[1]
以与以下相同的方式:
if ( i == CONST) //[2]
您永远不会成为以下错误的牺牲品:
if ( i = CONST) //[3]
然而,应该注意的是,当今大多数现代编译器都对构造给出了警告[3]
总之,如果您要修复所有编译器警告,您可以使用任何一种编码方式。我认为问题更多的是关于比较,而不是赋值。很抱歉第一次没有正确阅读问题。我完全同意您的看法。我只是想确保这不只是我自己,而且对其他人来说更清楚。是的,即使使用多部分条件,我认为首先处理“条件元素”比处理常量更有意义,因为(一些?)人类就是这样想的。对,我在任何情况下都不会使用将常量放在第一位的方式,因为如果我这样做,编译器会警告我(当然,情况并不总是这样,但今天确实如此)。我发现使用比较左侧的变量读起来更流畅。而且,对于不允许在表达式中赋值的正常语言,将常量放在左侧的原始原因甚至不适用。
if ( i == CONST) //[2]
if ( i = CONST) //[3]