【发布时间】:2015-01-19 09:34:56
【问题描述】:
我想听听您对最小化缩进是否好的意见。
我通常是这样处理问题的:
int foo_a() {
if (!check_value(x)) {
// error
return false;
}
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
return true;
}
另一方面,我也看到了这样的代码:
int foo_b() {
if (!check_value(x)) {
// error
return false;
} else {
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
return true;
}
}
int foo_c() {
if (check_value(x)) {
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
return true;
} else {
// error
return false;
}
}
但这可能适得其反,因为如果每一次检查都会创建一个新的 else-branch,则 ident 会变得非常大。
另一方面,对于决策,例如蔬菜或肉类,我通常这样做:
int foo_d(FOOD food) {
if (food.isVegetable) {
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
return;
} else {
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
return;
}
// assume here is NO shared code which is always executed for both food types.
}
但是像 foo_a() 那样做,它应该是这样的:
int foo_e(FOOD food) {
if (food.isVegetable) {
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
return;
}
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
// do stuff
return;
}
【问题讨论】:
-
这不是关于意图,而是关于多个返回语句、错误检查和(不必要的)else 子句。
-
不一定需要有返回值。问题是,我应该在哪里使用“else”以获得良好的编码风格,以及在哪里只有一个“if”并在其末尾返回(返回有或没有值)。
-
这就是我所说的,这与意图无关(而且我没有在任何地方提到返回值)。所以 - 在我看来 - 你应该改写你的问题和标题。
-
我将删除我的答案,我对所问的内容感到困惑:P
标签: coding-style indentation conventions