我发现自己非常普遍使用这样的模式:使用的 “如果/ ELSEIF /其他” 与 “的if/else {if/else语句}”
if (a > b) {
foo();
}
elseif (c > d) {
bar();
}
else {
baz();
}
在这里点是第二个条件是除非您仔细地遵循程序逻辑,否则不会明显与第一个连接。这是非常糟糕的事情吗?如果将上述短语描述为:
if (a > b) {
foo();
}
else {
if (c > d) {
bar();
}
else {
baz();
}
}
是否出于可维护性原因?有没有更好的模式,我完全错过了? “不明显连接”位似乎是我的代码中更常见的错误来源之一。
+1漏的划艇FTW – Kurru 2011-04-02 11:54:44
感叹,这是一个地方,我从很多不同(如果不是大多数)编码器:我真的喜欢只有一个从函数退出点。我确信这种模式有很多好的理由,但我喜欢最后得到一个回报的清洁度,理想的情况是在评论之前说“到现在为止,以下是真的:”。 看起来我应该去这个网站上的某个地方阅读。 – 2011-04-04 13:29:20
@LelandThorpe:严格遵守SESE导致[箭头反模式](http://lostechies.com/chrismissal/2009/05/27/anti-patterns-and-worst-practices-the-arrowhead-anti-模式/),这可以大大提高[圈复杂度](http://en.wikipedia。org/wiki/Cyclomatic_complexity)的代码(越复杂,越难以维护)。国际海事组织(不谦虚),如果发现自己超过三个深度括号,他们做错了什么。严格遵守美学(这是所有SESE是,恕我直言)导致不良的编码做法。 – Will 2011-04-04 13:42:11