2019独角兽企业重金招聘Python工程师标准>>>

英语原文 http://www.theserverside.com/tip/A-return-to-Good-Code
别再这样写了:

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里的方法只可以返回一个值,相应的,一个方法应该有且只有一个返回语句。

转载于:https://my.oschina.net/liu-xuewei/blog/86503

请正确使用return相关推荐

  1. 系统检测到您的访问行为异常 请正确输入以下验证码,验证通过后,可继续使用经验

    最近在公司上网百度时经常会出现这样的提示: 系统检测到您的访问行为异常 请正确输入以下验证码,验证通过后,可继续使用经验- 然后你输入其验证码,又不说对也不说错,就卡那,点击也换不了,很是无奈 ... ...

  2. log4j:warn找不到_修复log4j WARN找不到记录器的附加程序,请正确初始化log4j系统

    log4j:warn找不到 If you are reading this, you must be using log4j framework and got below error message ...

  3. 正确注释@return让PHPstorm动态返回类

    场景是这样的,有一个BaseModel(继承自ActionRecord),所有的其他model都继承自它,然后其中有一个方法,简单贴下这个类的代码,: class BaseModel extends ...

  4. SEO优化建议:请正确设置title、keywords、description

    我们在进行SEO优化时经常会提到title.keywords.description,但大部分创业企业不了解或根本不重视这3个标签,所以今天小编就跟大家分享一下title.keywords.descr ...

  5. java 初始化log4j_java – log4j:WARN请正确初始化log4j系统

    如何解决以下这些错误-我错过了一些jar文件??? log4j:WARN No appenders could be found for logger (smslib). log4j:WARN Ple ...

  6. Qt:Windows编程—Qt实现注册表启动项管理

    Qt实现注册表启动项管理 前言 Windows的开机启动项在很多地方都有设置,这次我们在注册表 子键"HKEY_LOCAL_MACHINE\Software\Microsoft\Window ...

  7. 手机199开头的号码的正则验证

    以前的正则验证里面,如果是199开头或者166开头的手机号码就没有办法通过验证,会给这些用户带来一定的麻烦 /* 手机号码验证 */var $phone_num = $("#phone&qu ...

  8. 【python+E-prime+fNIRS】探究认知资源在情绪与认知灵活性中是否存在中介效应课题

    [写在前面:这是笔者心理学的本科毕业设计内容,在此记录设计中所包含的部分思路.代码操作和设计步骤,方便后续查阅和学习,希望对大家有点帮助,对于不足之处,也希望各路大佬可以不吝赐教.本文为作者原创文章, ...

  9. 数据结构与算法: 约瑟夫问题(丢手绢)

    数据结构与算法: 约瑟夫(丢手绢)问题(单向链表,双向链表解决) Tips: 采用java语言, 关注博主,底部附有完整代码 采用到的知识点: 单向环形链表 双向环形链表 单向 / 双向 环形链表出圈 ...

最新文章

  1. 转载 为什么不要 lock(this) ? lock object 并是readonly
  2. MySQL root密码找回
  3. 在ASP.NET MVC中加载部分视图的方法及差别
  4. STL源码剖析 序列式容器|Vector
  5. 搭建python_Crawlab准备之python+scrapy环境搭建
  6. 漫步线性代数十八——正交基和格拉姆-施密特正交化(下)
  7. Git submodule 特性
  8. 如何用python分析大数据_Twitter数据挖掘:如何使用Python分析大数据
  9. 《Java程序员职场全攻略:从小工到专家》连载十四:先挣的是资本,后挣的是钱
  10. 编写高可用Eureka Server
  11. 规避VMware虚拟机检测
  12. Python人脸检测与人脸数据集的生成
  13. 中国独角兽上市潮,爱奇艺优信小米值得投资吗?
  14. 金格套红正文字体格式的修改
  15. Denoising point sets via L0 minimization
  16. 中国历史上十大经典遗言
  17. SEO优化|如何让网站关键词排名快速提高
  18. 给Excel表格中某一列都添加指定内容
  19. 红外线探测报警器的简单设计
  20. Java正则表达式校验密码规则

热门文章

  1. 学号20175313 《程序设计中临时变量的使用》第八周
  2. 有赞融资10亿港元 腾讯领投加紧布局产业互联网
  3. robot framework中的timeout的关键词
  4. 初探JavaScript魅力1
  5. linux 程序自启
  6. cocos2d-x 2.0启用HD高清图片支持
  7. 使用ASV2011研究Molehill API
  8. Windows组策略屏蔽U盘有妙法
  9. SQL SERVER中求上月、本月和下月的第一天和最后一天[转]
  10. 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP