只要一个返回语句

好的Java代码只要一个return语句程序员

导读:原文根据做者Jasone Tee在theserverside.com上发表的一篇《A return to Good Code 翻译而来。译文来自外刊IT评论《只要一个返回语句》。ide

别再这样写了:spa

public boolean foo() {
 if (true) {
   return true;  
 }  else {  
 return false;  
 }
}.net

每次当我深刻某个开源项目,看到大概是某个专家写的、并被有经验的专业人士审查过的这样的代码,我都会惊讶不已,居然没有人去阻止这个开发者在这个方法里胡乱的放置返回语句。翻译

请告诉我,把代码写成下面的样子很难吗?code

public boolean foo() {  
 boolean flag = true;  
 if (true) { 
   flag=true;
 }  
 else {
   flag=false;
 }
 return flag;
}server

这是Java基本常识。实际上,这不只是Java基本常识,这是小学水平的Java知识。若是你的方法返回一个值,你应该在方法的开始处把它声明作一个变量。而后再去作一些赋予这个变量正确意义的操做。而后,在你的最后一行,把这个变量返回给调用程序。这样作不单单是为写出好的代码,这是一种有教养的表现。ip

你是否曾试图修改过一些在方法里处处都是返回语句的程序代码?无从下手。事实上,去维护这样的代码,你第一要作的是从新组织它的结构,让它里面再也不有一大堆的返回语句。这样才能把事情作好。没有任何一个方法是不能够写成只在末尾处有一个的、单一的、易于找到的返回语句的形式的。开发

的确,烂程序员总有一万个理由来讲明他们为何编写出这样糟糕的程序代码。“我只是为了不在返回时一堆的多余的条件判断语句。”那好,首先,我告诉你,计算机中执行一些条件判断语句时是该死的快,你用短路一个方法来节省CPU的一两个指令操做不是显的太荒诞了吗。此外,若是这些所谓多余的条件判断语句最终没有派上用场的话,这是不是一个有用的信号来讲明你的“多余”的代码可能须要重写,也许能够把它们重构成另一个方法,让它们显的很少余?get

关键要说的是,没有任何理由能够为写糟糕的代码或当懒惰的程序员作托辞,特别是当写出好的代码并非那么困难的状况下。不要在写出里面有成百上千个返回语句的方法了。Java里的方法只能够返回一个值,相应的,一个方法应该有且只有一个返回语句。

相关文章
相关标签/搜索