我的老师对我编写的一些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语句,你能给出一个非常令人信服的理由(如果上面的代码是可读的并且是我的多重返回编码实践的最大范围,则不可读的代码不是理由)
答案 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';
}