如何在函数 returns 中使用 if-else 语句?
How to use if-else statement with function returns?
我总是尽量避免嵌套语句。
他们引导我将代码放入长花括号中。当每个条件中的代码量变大时,就很难跟上代码了。
if(condtion) {
} else if(condition2) {
} else {
}
所以如果我有这样的代码:
void doSomething(){
if(condtion) {
return;
} else if(condition2) {
return;
} else {
return;
}
}
我总是将其更改为这种形式(我避免了 else
,因为每个条件都有一个 return
语句):
void doSomething() {
if(condtion) {
return;
}
if(condition2) {
return;
}
return;
}
但是有人说我的有点难读,哪个更好?
常见案例:
如果两个结果相同,则全靠阅读代码的人。
当方法开始做比检查简单条件更复杂的事情时,它应该只有一个 return 语句。
如果方法的逻辑真的很复杂,你必须创建各种方法来阐明。
Oracle Java Code Conventions 7.4 没有在 if 语句中提及 return,而是在 if-else 语句中提及
7.4 if,if-else,if else-if else语句
语句的 if-else class 应具有以下形式:
if (condition) {
statements;
}
if (condition) {
statements;
} else {
statements;
}
if (condition) {
statements;
} else if (condition) {
statements;
} else {
statements;
}
因此,根据 ORACLE 约定,您必须使用 if-if else-else
,但您可以选择:
一个return
语句
boolean doSomething(){
boolean var;
if(condtion){
var = false;
}else if(condition2){
var = true;
}else{
var = false;
}
return var;
}
或 3 returns
个语句。
boolean doSomething(){
if(condtion){
return;
}else if(condition2){
return;
}else{
return;
}
}
如果每个条件的代码量变大,我会做:
void doSomething()
{
if (condtion)
{
function1();
}
else if (condition2)
{
function2();
}
else
{
function3();
}
}
像这样,我觉得比较好读
如果条件是一些快速案例或先决条件,我更喜欢没有 else
语句的直接 return
或 throw
。例如:
void processArray(int[] array) {
if(array == null || array.length == 0) {
System.out.println("Empty input");
return;
}
// do some complex computations
}
这样,您方法的其余部分(主要课程)就没有额外的缩进,末尾也没有额外的大括号,这可能远低于 else
语句。
如果条件分支很长并且长度大致相同,那么代码无论如何都会有味道。您需要重构它,将分支提取到方法或(有时更好)使用 Command pattern.
之类的方法来分离 类
But someone told me mine is a bit hard to read, which one is better?
没有"better"。有人告诉你你的很难读,而显然你发现你的更容易阅读,这一事实证明这完全是主观的。
你应该按照对你来说更容易的方式来做。
我总是尽量避免嵌套语句。
他们引导我将代码放入长花括号中。当每个条件中的代码量变大时,就很难跟上代码了。
if(condtion) {
} else if(condition2) {
} else {
}
所以如果我有这样的代码:
void doSomething(){
if(condtion) {
return;
} else if(condition2) {
return;
} else {
return;
}
}
我总是将其更改为这种形式(我避免了 else
,因为每个条件都有一个 return
语句):
void doSomething() {
if(condtion) {
return;
}
if(condition2) {
return;
}
return;
}
但是有人说我的有点难读,哪个更好?
常见案例:
如果两个结果相同,则全靠阅读代码的人。
当方法开始做比检查简单条件更复杂的事情时,它应该只有一个 return 语句。
如果方法的逻辑真的很复杂,你必须创建各种方法来阐明。
Oracle Java Code Conventions 7.4 没有在 if 语句中提及 return,而是在 if-else 语句中提及
7.4 if,if-else,if else-if else语句
语句的 if-else class 应具有以下形式:
if (condition) {
statements;
}
if (condition) {
statements;
} else {
statements;
}
if (condition) {
statements;
} else if (condition) {
statements;
} else {
statements;
}
因此,根据 ORACLE 约定,您必须使用 if-if else-else
,但您可以选择:
一个return
语句
boolean doSomething(){
boolean var;
if(condtion){
var = false;
}else if(condition2){
var = true;
}else{
var = false;
}
return var;
}
或 3 returns
个语句。
boolean doSomething(){
if(condtion){
return;
}else if(condition2){
return;
}else{
return;
}
}
如果每个条件的代码量变大,我会做:
void doSomething()
{
if (condtion)
{
function1();
}
else if (condition2)
{
function2();
}
else
{
function3();
}
}
像这样,我觉得比较好读
如果条件是一些快速案例或先决条件,我更喜欢没有 else
语句的直接 return
或 throw
。例如:
void processArray(int[] array) {
if(array == null || array.length == 0) {
System.out.println("Empty input");
return;
}
// do some complex computations
}
这样,您方法的其余部分(主要课程)就没有额外的缩进,末尾也没有额外的大括号,这可能远低于 else
语句。
如果条件分支很长并且长度大致相同,那么代码无论如何都会有味道。您需要重构它,将分支提取到方法或(有时更好)使用 Command pattern.
之类的方法来分离 类But someone told me mine is a bit hard to read, which one is better?
没有"better"。有人告诉你你的很难读,而显然你发现你的更容易阅读,这一事实证明这完全是主观的。
你应该按照对你来说更容易的方式来做。