关于Java:多重返回语句的可读性

Multiple return statements, readability

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Should a function have only one return statement?

我的老师对我写的一些Java代码进行了点评(我仍然得到A,这只是我在Java课程中获得的第一个非100%年级),我不会在这一点上与老师争论,但我想从实际的程序员那里得到一些建议。这是一段令人不快的代码:

1
2
3
4
5
6
7
8
9
10
private char byte2suit(byte val) {
    switch(val) {
        case 0: return 's';
        case 1: return 'c';
        case 2: return 'h';
        case 3: return 'd';
        }
    //fallback value
    return 'h';
    }

在我看来,这更清楚地表明,初始化返回值,在案例中分配(并添加break;每行),然后返回值。当然,在代码中,其他人看到,我的观点并不完全有说服力,所以我想知道你们对Java中的多个返回语句(或者C/C++)的看法,如果你使用多个返回语句,你使用它多于"If(this)返回A;否则返回B;"语句?如果你不使用多个返回语句,你能给出一个真正令人信服的理由吗(如果上面的代码是可读的,并且是我的多个返回代码实践的最大范围,那么不可读代码不是一个理由)


一些学者认为在函数结束时应该只有一个返回语句。他们认为多个返回语句在某种程度上使代码不纯净。

然而,大多数语言设计师和专业程序员不同意这种纯粹的观点。如果您的方法很长而且很复杂,那么多个返回语句可能会令人困惑(但如果是这样,那么您会遇到更大的问题,然后是多个返回语句)。但通常多个返回语句可以使代码更具可读性。

你的代码很好,除了我做的一个更改:使用default

1
2
3
4
5
6
7
switch(val) {
    case 0: return 's';
    case 1: return 'c';
    case 2: return 'h';
    case 3: return 'd';
    default: return 'h';
}