打字猴:1.700438766e+09
1700438766 编写高质量代码:改善Java程序的151个建议 [:1700438075]
1700438767 编写高质量代码:改善Java程序的151个建议 建议8:不要让旧语法困扰你
1700438768
1700438769 N多年前接手了一个除了源码以外什么都没有的项目,没需求、没文档、没设计,原创者也已鸟兽散了,我们只能通过阅读源码来进行维护。期间,同事看到一段很“奇妙”的代码,让大家帮忙分析,代码片段如下:
1700438770
1700438771 public class Client{
1700438772
1700438773 public static void main(String[]args){
1700438774
1700438775 //数据定义及初始化
1700438776
1700438777 int fee=200;
1700438778
1700438779 //其他业务处理
1700438780
1700438781 saveDefault:save(fee);
1700438782
1700438783 //其他业务处理
1700438784
1700438785 }
1700438786
1700438787 static void saveDefault(){
1700438788
1700438789 }
1700438790
1700438791 static void save(int fee){
1700438792
1700438793 }
1700438794
1700438795 }
1700438796
1700438797 该代码的业务含义是计算交易的手续费,最低手续费是2元,其业务逻辑大致看懂了,但是此代码非常神奇,“saveDefault:save(fee)”这句代码在此处出现后,后续就再也没有与此有关的代码了,这做何解释呢?更神奇的是,编译竟然还没有错,运行也很正常。Java中竟然有冒号操作符,一般情况下,它除了在唯一一个三元操作符中存在外就没有其他地方可用了呀。当时连项目组里的高手也是一愣一愣的,翻语法书,也没有介绍冒号操作符的内容,而且,也不可能出现连括号都可以省掉的方法调用、方法级联啊!这也太牛了吧!
1700438798
1700438799 隔壁做C项目的同事过来串门,看我们在讨论这个问题,很惊奇地说“耶,Java中还有标号呀,我以为Java这么高级的语言已经抛弃goto语句了……”,一语点醒梦中人:项目的原创者是C语言转过来的开发人员,所以他把C语言的goto习惯也带到项目中了,后来由于经过N手交接,重构了多次,到我们这里goto语句已经被重构掉了,但是跳转标号还保留着,估计上一届的重构者也是稀里糊涂的,不敢贸然修改,所以把这个重任留给了我们。
1700438800
1700438801 goto语句中有着“double face”作用的关键字,它可以让程序从多层的循环中跳出,不用一层一层地退出,类似高楼着火了,来不及一楼一楼的下,goto语句就可以让你“biu~”的一声从十层楼跳到地面上。这点确实很好,但同时也带来了代码结构混乱的问题,而且程序跳来跳去让人看着就头晕,还怎么调试?!这样做甚至会隐祸连连,比如标号前后对象构造或变量初始化,一旦跳到这个标号,程序就不可想象了,所以Java中抛弃了goto语法,但还是保留了该关键字,只是不进行语义处理而已,与此类似的还有const关键字。
1700438802
1700438803 Java中虽然没有了goto关键字,但是扩展了break和continue关键字,它们的后面都可以加上标号做跳转,完全实现了goto功能,同时也把goto的诟病带了进来,所以我们在阅读大牛的开源程序时,根本就看不到break或continue后跟标号的情况,甚至是break和continue都很少看到,这是提高代码可读性的一剂良药,旧语法就让它随风而去吧!
1700438804
1700438805
1700438806
1700438807
1700438808 编写高质量代码:改善Java程序的151个建议 [:1700438076]
1700438809 编写高质量代码:改善Java程序的151个建议 建议9:少用静态导入
1700438810
1700438811 从Java 5开始引入了静态导入语法(import static),其目是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序。我们先来看一个不使用静态导入的例子,也就是一般导入:
1700438812
1700438813 public class MathUtils{
1700438814
1700438815 //计算圆面积
[ 上一页 ]  [ :1.700438766e+09 ]  [ 下一页 ]