打字猴:1.70043879e+09
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 //计算圆面积
1700438816
1700438817 public static double calCircleArea(double r){
1700438818
1700438819 return Math.PI*r*r;
1700438820
1700438821 }
1700438822
1700438823 //计算球面积
1700438824
1700438825 public static double calBallArea(double r){
1700438826
1700438827 return 4*Math.PI*r*r;
1700438828
1700438829 }
1700438830
1700438831 }
1700438832
1700438833 这是很简单的数学工具类,我们在这两个计算面积的方法中都引入了java.lang.Math类(该类是默认导入的)中的PI(圆周率)常量,而Math这个类写在这里有点多余,特别是如果MathUtils中的方法比较多时,如果每次都要敲入Math这个类,繁琐且多余,静态导入可解决此类问题,使用静态导入后的程序如下:
1700438834
1700438835 import static java.lang.Math.PI;
1700438836
1700438837 public class MathUtils{
1700438838
1700438839 //计算圆面积
[ 上一页 ]  [ :1.70043879e+09 ]  [ 下一页 ]