`
dcj3sjt126com
  • 浏览: 1872406 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

好的代码里只要一个 return 语句

 
阅读更多

别再这样写了:
public boolean foo() {
    if (true) {
         return true; 
    } else { 
         return false; 
    }
}
每次当我深入某个开源项目,看到大概是某个专家写的、并被有经验的专业人士审查过的这样的代码,我都会惊讶不已,竟然没有人去阻止这个开发者在这个方法里胡乱的放置返回语句。
请告诉我,把代码写成下面的样子很难吗?
public boolean foo() { 
    boolean flag = true; 
    if (true) { 
        flag=true;
    } else {
        flag=false;
    }
    return flag;
}
这是Java基本常识。实际上,这不仅是Java基本常识,这是小学水平的Java知识。如果你的方法返回一个值,你应该在方法的开始处把它声明做一个变 量。然后再去做一些赋予这个变量正确意义的操作。然后,在你的最后一行,把这个变量返回给调用程序。这样做不仅仅是为写出好的代码,这是一种有教养的表 现。
你是否曾试图修改过一些在方法里到处都是返回语句的程序代码?无从下手。事实上,去维护这样的代码,你第一要做的是重新组织它的结构,让它里面不再有一大 堆的返回语句。这样才能把事情做好。没有任何一个方法是不可以写成只在末尾处有一个的、单一的、易于找到的返回语句的形式的。
的确,烂程序员总有一万个理由来说明他们为什么编写出这样糟糕的程序代码。“我只是为了避免在返回时一堆的多余的条件判断语句。”那好,首先,我告诉你, 计算机中执行一些条件判断语句时是该死的快,你用短路一个方法来节省CPU的一两个指令操作不是显的太荒诞了吗。此外,如果这些所谓多余的条件判断语句最 终没有派上用场的话,这是否是一个有用的信号来说明你的“多余”的代码可能需要重写,也许可以把它们重构成另外一个方法,让它们显的不多余?
关键要说的是,没有任何理由可以为写糟糕的代码或当懒惰的程序员做托辞,特别是当写出好的代码并不是那么困难的情况下。不要在写出里面有成百上千个返回语句的方法了。Java里的方法只可以返回一个值,相应的,一个方法应该有且只有一个返回语句。 

分享到:
评论

相关推荐

    计算机二级C语言考点归纳:goto语句及语句标号的使用.docx

    语句标号可以是任何合法的标识符,只要在标识符后面加一个冒号,该标识符就成了一个语句标号。例如:label1:、label2:等都是合法的语句标号。 goto语句的使用可以实现程序的跳转控制,例如,在某些情况下,我们...

    第6章 流程控制语句1

    语句可以是简单的单行表达,如变量赋值或函数调用,也可以是复合语句,即由大括号包围的一组语句,形成一个代码块。 1. 声明语句:这是用来创建变量的语句,例如`var box = 100;`。变量声明语句可以包括变量的初始...

    第三章java流程控制语句.pptx

    - Return语句:从方法中返回一个值(对于void方法则无返回值),并结束该方法的执行。 6. 常用的程序设计方法 - 枚举法:列举所有可能情况来解决问题。 - 地推法:根据已知的解,推导出未知解。 - 递归法:函数调用...

    C语言的32个关键字和9种控制语句

    9. **return语句**:从函数返回,并可以携带一个返回值。 以上是C语言中的32个关键字以及9种控制语句的详细介绍。这些关键字和控制语句是构建C程序的基础,理解它们的功能和使用方法对于学习C语言至关重要。

    java return用法实例详解

    本文将详细介绍Java return用法的各种实例,包括在有返回值的方法中使用return语句、在void方法中使用return语句、return语句与break语句的区别、return语句在数组返回类型中的应用、return语句在基本返回类型中的...

    C语言程序设计语句与控制流PPT课件.pptx

    - **表达式语句**:由一个或多个表达式组成,如 `x = 5;`,执行完表达式后,语句结束。 - **控制流语句**:包括条件语句(`if-else`)、循环语句(`for`, `while`, `do-while`)和开关语句(`switch`)。 - **...

    C语言程序设计-单分支的if语句.pptx

    4. **语句组**:如果`if`后面的语句是一个多行的代码块,使用花括号将它们括起来,以确保语句组的正确性。 接下来,我们通过两个示例来理解`if`语句的应用: **例4.1**:将输入的小写字母转换为大写字母 ```c #...

    js中return false(阻止)的用法

    return false 阻止表单提交不起今天这个问题困扰了...只要遇到return语句,程序就在那一行代码停止执行,执行控制将立刻返回到调用该程序的代码处。 代码如下: function chkinput(form) { if(form.title.value==””) {

    VS C# 代码片段

    如果在`checked`代码块中发生溢出,则会抛出一个`System.OverflowException`异常。示例代码如下: ```csharp int a = int.MaxValue; int b = 1; checked { int c = a + b; // 将抛出 OverflowException } ``` 在...

    程序设计-do…while语句.pptx

    这里的“表达式”通常是一个条件判断,其结果为布尔值,即真(非零)或假(零)。`do…while`语句的独特之处在于,它会**先执行一次循环体**,然后才检查表达式。如果表达式的值为真,循环将继续;若为假,则退出...

    C#常用关键字及含义.doc

    * return:一个用于跳出方法的跳转语句,执行返回到方法调用者。 异常处理关键字 * catch:定义一个代码块,在特定类型异常抛出时,执行块内代码。 * finally:定义一个代码块,在程序控制离开 try 代码块后执行。...

    Python电子教案5_函数和代码复用.pptx

    函数可以在一个程序中多个位置使用,也可以用于多个程序,当需要修改代码时,只需要在函数中修改一次,所有调用位置的功能都更新了,这种代码重用降低了代码行数和代码维护难度。 Python 定义一个函数使用 def 保留...

    Java-control-statements.zip_process control

    - **return语句**:在方法中,return语句用于返回一个值(对于无返回值的方法,仅用于终止方法执行)。如果在主函数中使用,它将结束整个程序的运行。 在"Java control statements.ppt"这个文件中,你可以期待看到...

    c语言程序设计语法

    4. `return`语句:从函数中返回,并可选择性地返回一个值。 四、复合语句 复合语句是通过花括号`{}`将一组语句组合在一起,使其被视为单个语句。这种语句常用于控制结构中,例如: ``` { t = x; x = y; y = t;...

    c#中的关键字(共76个)

    for:定义一个循环语句,只要指定条件满足就继续执行。 foreach:用于遍历一个群集的元素。 goto:一个跳转语句,将程序执行重定向到一个标签语句。 if:一个条件语句,根据一个布尔表达式的值选择一个语句执行。...

    [C++课堂课件笔记]函数的运用详解.ppt

    注意:在一个函数体内允许有一个或多个return语句,一旦执行到其中某一个return语句时,return后面的语句就不再执行,直接返回调用位置继续向下执行。 函数形参也可以在函数体外说明。如下例: func1(int a, int b)...

    程序流程控制结构.pptx

    `while`语句基于一个条件重复执行代码块,只要条件为真就会继续循环。`while`循环的特点在于先检查条件再执行循环体,因此可能零次执行。`for`语句则提供了更紧凑的循环控制,其语法包括初始化、条件检查和迭代更新...

    PHP中的代码安全和SQL Injection防范

    在编写PHP代码时,一个容易被忽视但非常重要的步骤是初始化变量。这一步骤看似简单,但在实际应用中却能极大地增强代码的安全性。 ##### 2.1 变量未初始化的风险 当变量未初始化或初始化不当时,可能会被恶意利用,...

    flash代码集合适合入门学习

    - **Ge**: 比较一个字符串是否大于等于另一个字符串。 - **Gt**: 比较一个字符串是否大于另一个字符串。 - **Le**: 比较一个字符串是否小于等于另一个字符串。 - **Lt**: 比较一个字符串是否小于另一个字符串。 - **...

Global site tag (gtag.js) - Google Analytics