【外刊IT评论】只要一个返回语句

标签: 烂程序员 烂代码 批评评论 | 发表时间:2011-03-23 00:04 | 作者:admin bill
出处:http://www.aqee.net
本文是从 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里的方法只可以返回一个值,相应的,一个方法应该有且只有一个返回语句。


本文原始地址:只要一个返回语句

相关 [it 语句] 推荐:

sql语句总结

- zhaoloving - 博客园-首页原创精华区
1、创建数据库语句(以部门表(department)和员工表(employee)位例). --员工表 employee.   alter table [表名] add .     constraint [键名] Primary key [主键名称].   alter table [表名] add.      constraint [键名] unique(唯一键名称).

SQL语句大全

- - SQL - 编程语言 - ITeye博客
原文地址:http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html. 3、说明:备份sql server. --- 创建 备份数据的 device. A:create table tab_new like tab_old (使用旧表创建新表).

sql经典语句

- - 数据库 - ITeye博客
3、说明:备份sql server. --- 创建 备份数据的 device. table tab_new like tab_old (使用旧表创建新表). DB2中列加上后数据类型也不能改变,唯一能改变的是增加. 注:索引是不可更改的,想更改必须删除重新建. 10、说明:几个简单的基本的sql语句.

sql语句优化

- - 数据库 - ITeye博客
性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好. 对复杂的SQL语句,要设法对之进行简化. 1)不要有超过5个以上的表连接(JOIN). 2)考虑使用临时表或表变量存放中间结果.

Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

- - 程序猿DD
昨天在群里看到有小伙伴问,Java里如何解析SQL语句然后格式化SQL,是否有现成​类库可以使用. 之前TJ没有做过这类需求,所以去研究了一下,并找到了一个不过的解决方案,今天推荐给大家,如果您正要做类似内容,那就拿来试试,如果暂时没需求,就先了解收藏(技多不压身). JSqlParser是一个用Java编写的SQL解析器,可以将SQL语句解析为Java对象,从而使开发人员能够轻松地分析、修改和重构SQL查询.

经典语句五十九

- sincerebaby - 5time经典语录网
最柔软的感情其实是说不出口的,最喜欢的人也不要轻易挂在嘴边,因为说出来就轻了. 这个世界上有一种人,他永远告诉自己,不要回头,能依靠的只会是自己. 他可以沉寂着、辗转着、挣扎着等待,抓住属于自己的每个微小机会,然后,全力出击. 他可以白手起家,但不会手无寸铁. 他懂得步步为营,他永不因别人的甜言蜜语冲昏头脑,他是精明的,善于控制的.

经典语句六十

- sincerebaby - 5time经典语录网
Best relationship isnt the one that brings together perfect people, but when each individual learns to live with the imperfections of each other——好的感情并不是把两个完美的人组合在一起,而是双方都懂得包容对方的不完美.

经典语句六十一

- sincerebaby - 5time经典语录网
只要心里还存着不甘心,就还不到放弃的时候……. 过错是暂时的遗憾,错过却是长久的遗憾. 谁,执我之手,消我半世孤独;. 谁,吻我之眸,遮我半世流离;. 谁,抚我之面,慰我半世哀伤;. 谁,扶我之肩,驱我一世沉寂;. 有生之年,狭路相逢,终不能幸免,手心忽然长出纠缠的曲线. 懂事之前,情动以后,长不过一天.

SQL查询语句(oralce)(1)

- - ITeye博客
  主要用于创建删除数据库对象和维护数据对象的属性. 主要有三个主命令:CREATE .DROP. SQL>CREATE TABLE 表1 AS SELECT * FROM 表2;. SQL>DROP TABLE 表名;. SQL>--添加.修改.删除字段. SQL> ALTER TABLE 表名 ADD/MODIFY(字段 类型);.

mysql语句执行顺序

- - SQL - 编程语言 - ITeye博客
首先,SELECT语句的基本语法如下:  .   LIMIT from, count; # Limiting row count on results 对于MySQL,除了第一行,其他部分都是可选的,有的DBMS要求FROM从句也是必须的.   SQL Select语句完整的执行顺序【从DBMS使用者角度】:  .