多个返回语句,可读性

时间:2012-10-17 14:12:37

标签: java readability

  

可能重复:
  Should a function have only one return statement?

我的老师对我编写的一些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';
    }

在我看来,更清楚的是初始化一个返回值,在这种情况下分配(并添加break;每一行)然后返回值。当然,在其他人看到的代码中,我的意见并不强大,所以我想知道你们对java(或C / C ++)中多个return语句的看法,如果你确实使用了多个return语句你使用它比“if(this)return a; else return b;”声明?如果你不使用多个return语句,你能给出一个非常令人信服的理由(如果上面的代码是可读的并且是我的多重返回编码实践的最大范围,则不可读的代码不是理由)

1 个答案:

答案 0 :(得分:13)

一些学者认为在函数末尾只应该有一个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';
}