9

可能重复:
一个函数应该只有一个返回语句吗?

我的老师在我写的一些 java 代码上拿了分数(我仍然得到 A,这只是我在 java 课程中获得的第一个非 100% 的成绩)我不会和老师争论点,但我想从实际的程序员那里得到一些建议。这是有问题的代码:

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';
    }

在我看来,这比初始化返回值、在 case 中分配(并添加 break; 每行)然后返回值要清楚得多。当然,在其他人看到的代码中,我的观点并不是很强大,所以我想知道你们对 java(或 C/C++)中的多个 return 语句的看法,如果你确实使用多个 return 语句你是否比“if (this) return a; else return b;”更多地使用它?陈述?如果不使用多返回语句,能否给出一个真正令人信服的理由(不可读的代码不是原因,如果上面的代码是可读的,是我多返回编码实践的最大程度)

4

1 回答 1

14

一些学者认为,函数末尾应该只有一个 return 语句。他们认为多重 return 语句在某种程度上使代码不纯。

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

您的代码很好,除了我要进行的一项更改:使用default.

switch(val) {
    case 0: return 's';
    case 1: return 'c';
    case 2: return 'h';
    case 3: return 'd';
    default: return 'h';
}
于 2012-10-17T14:14:56.050 回答