在一个函数的整个逻辑符合“如果这个条件是真/假,返回这个,否则返回这个”的线,什么是最好的或可能是最接受的形式呢?似乎有3种我见过的方式。如果其他分支,返回语句的位置?
int function(bool foo){
if(foo){
return doSomething();
}else{
return somethingElse;
}
}
这是很有道理的,但我曾经读到过这样一个返回类型的函数不应该返回类型位于一个分支。 (为什么,源从来不说),所以,再有就是这个:
int function(bool foo){
if(foo){
return doSomething();
}
return somethingElse;
}
具有返回类型的分支之外的,但它带走了一些我认为代码的含义,而我也看到了if-else块有好处。 (那些是什么,该消息来源没有说任何)最后,还有这样的:
int function(bool foo){
int result;
if(foo){
result = doSomething();
}else{
result = somethingElse;
}
return result;
}
意思是存在的,返回的是一个分支之外的,但在另外一个变量和代码,这是不是真正需要的功能。
我的问题是这三种形式中的哪一种或者其他形式(如果有的话)会是在这种情况下编写函数的最佳方式?
我更喜欢第二个,但我认为这根本不重要。然而,第三个对我来说似乎有点不合适,除非你是一个坚持每个函数一个return语句原则的人。 – chris 2012-07-30 01:47:45
太主观。我个人会写:'返回foo? doSomething():somethingElse;'。 – GManNickG 2012-07-30 01:49:09
好阅读[“唯一回报”的概念来自哪里?](http://programmers.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come -从)。 – 2012-07-30 02:06:16