我想听听您对最小化缩进是否合适的看法。
我通常这样做,处理问题:
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;
}
}
但这可能会产生反作用,因为如果每次检查都会创建一个新的其他分支,那么这些意识就会变得非常大。
另一方面,对于决策,例如蔬菜或肉类,我通常这样做:
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;
}
答案 0 :(得分:0)
这只是风格问题,但我会选择更少代码和更少缩进的方式。
如果通过提取函数来缩短函数,无论您选择哪个函数,它都应该是可读的。 e.g:
int foo_e(FOOD food) {
if (food.isVegetable)
return foo_vegetable(food);
return foo_meat(food);
}