1
18
我更喜欢把最常见的路径放在第一位,我坚信减少筑巢,所以我会尽可能打破、继续或返回,而不是埃尔辛。我通常更喜欢针对正面条件进行测试,或者将负面条件反转为正面条件。
|
2
4
两个(相互矛盾的)教科书引用:
--艾伦·霍卢布,“足够的绳子射中你自己的脚”,第52页
--史蒂夫·麦康奈尔,“代码完成,第二版”,第356页 |
3
3
我喜欢第一个。条件应该尽可能简单,并且应该相当明显,哪种情况下更简单,哪种情况下更简单!条件 |
4
3
如果我需要
做
每种情况下,我都会使用
|
5
3
如果代码要检查错误条件,我宁愿将该代码放在第一位,“成功”代码放在第二位;从概念上讲,这使函数调用及其错误检查代码保持在一起,这对我来说很有意义,因为它们是相关的。例如:
|
6
3
我同意奥利在可能的情况下使用积极的if子句。 请不要这样做:
我曾经在一个我工作过的地方看到过很多这样的情况,我曾经想知道是否有一个编码员不明白为什么不工作。。。 |
7
3
当我查看数据验证时,我尝试将我的条件设置为“白名单”——也就是说,我测试我将接受什么:
而不是相反,它往往退化为:
|
8
2
我知道这不是你想要的,但是。。。许多开发人员使用一个“guard子句”,即一个否定的“if”语句,该语句会尽快脱离方法。在这一点上,没有真正的“其他”。 例子:
有一些核心的c/c++/汇编人员会告诉你,你正在破坏你的CPU!!!(在许多情况下,处理器倾向于使用“true”语句,并尝试“预取”下一步要做的事情……因此理论上任何“false”条件都会刷新管道,并且速度会慢几微秒)。 在我看来,我们正处在“更好”(更容易理解)的代码胜于几微秒CPU时间的时刻。 |
9
2
永远不要给变量命名,如果需要的话,使用同义词表并找到相反的名称。我见过很多像这样糟糕的代码
而不是显而易见的
也就是说
始终注意条件是什么,以及如何简化它们。 |
10
2
软件是知识的获取。你在编码某人关于如何做某事的知识。 软件应该符合问题的“自然”要求。当有疑问时,问问其他人,看看人们到底说了什么,做了什么。 “常见”情况是什么都不做?然后呢
“总是积极的”规则并不是你首先想要的。您希望看到更像下面这样的规则。
|
11
2
Holub rule mentioned here 并将较短的代码放入if。这使得在查看代码时更容易在一个屏幕上看到if/else流。
|
12
1
对我来说,这取决于条件,例如:
我倾向于用我想要的逻辑与自己交谈,并将其编码为我头脑中的小声音。 |
13
1
通常可以使条件为正,而无需切换if/else块。 改变
|
14
1
英特尔奔腾分支预测预取“如果”情况的指令。如果它改为跟随“else”分支:它将刷新指令管道,从而导致暂停。 如果你非常关心绩效:将最可能的结果放在“如果”子句中。
|
15
1
另一方面,如果您使用的是Perl之类的语言,特别是如果您的false条件是错误条件或最常见的条件,则可以使用“除非”结构,该结构执行代码块,除非条件为true(即与if相反):
|
16
1
那么,让我们假设一定有一个“else”子句。 我认为可读性/可理解性至少会带来三个关键要求或规则,不幸的是,它们经常相互竞争:
因此,我们有这三个相互竞争的要求/规则,而真正的问题是:其中哪一个比其他的更重要。对于Allen Holub来说,规则1可能是最重要的一条。对于史蒂夫·麦康奈尔来说,这是规则2。但我不认为你真的可以只选择这些规则中的一条作为单一的魁地林。 我打赌你已经猜到了我个人的优先顺序(从我上面的规则排序来看:-)。 我的理由很简单:
我希望有人能理解这部作品。。。 |
17
0
一般来说,如果一个比另一个大很多,我就把大一点的定为
|
18
0
|
19
0
我总是把最有可能的放在第一位。 在Perl中,我有一个额外的控制结构来帮助实现这一点。if的倒数。
|
20
0
你应该总是把最有可能的情况放在第一位。除了可读性更好之外,它还更快。这也适用于switch语句。 |
21
0
|
22
0
我通常将肯定结果(方法)放在开头,因此:
但如果使用的方法的条件必须为false,我会这样做:
|
23
0
如果您必须有多个出口点,请将它们放在第一位,并明确说明:
|
Alex Pander · cleaner代码的嵌套命名空间[已关闭] 6 年前 |
Jamil Noyda · 导入模块的最佳方式Python[复制] 6 年前 |
Samselvaprabu · 我们是否需要不惜任何代价避免重复? 6 年前 |
user9549524 · 基于一列的值从二维矩阵中提取值 6 年前 |
MedAl · 不使用try/catch处理异常 6 年前 |
Declan McKenna · 特殊情况模式在Swift中是否多余? 6 年前 |