本书由作者闫廷骥所著。花了2年时间。作者在日本留学期间,利用自己在该领域10年的实践经验,获得了代码优化和质量。管理培训技术资料,同时参考了大量文献和各种博客等优质网络资源,借助Checkstyle134例、FindBugs408例、PMD代码规范工具368例,编写而成。终于出版了。看完这本书,我也深思了,所以做这个笔记,以备后续巩固。章节结构:全书围绕以下几点进行了细致的讲解:从目录结构可以看出作者的初衷是必须具备扎实的理论知识,才能做进一步的代码优化。由于时间关系,我想选择阅读中给我印象最深、受益最大的地方。第一章代码质量软件质量是满足客户软件需求的能力,代码质量是满足软件质量的前提!那么如何提高代码质量呢?有以下两种方法:1、精测是外在表现。2.代码检查是内部基础。这两句话,每一个立志成为建筑师的人,都要时刻铭记在心。听过一个程序员说,他写代码的时候,有时能感受到上帝造物的感觉(满足客户需求),也能感受到其他程序员的心声(对现有代码的理解)......第2章代码质量静态检查工具代码分析技术分为:1.静态分析:检查程序代码。2、动态分析:程序运行时检查,重点关注内存、性能和资源。可以经常使用Checkstyle+FindBugs工具,一个专注于代码编写风格,一个专注于发现代码缺陷,黄金搭档。第三章代码优化的一般准则以下准则是作者多年精心挑选出来的,告诫大家:1.避免使用空类(即除了类定义或默认结构方法之外没有任何其他代码的类)【建议】2.去掉多余的imports(也就是classheaders,不应该有多余的或者无用的imports)【强制】3.去掉你复制粘贴的无用代码(也就是你从其他地方复制过来的那些代码,是否有牵连)已有的不要保留,因为以后不知道是什么)【强制】4、需要制定命名系统规范(即变量名、方法名、类名、包名、等等,都需要规范)【强制】5.去除重复代码(如果多处使用重复的代码块,直接拉出来)【强制】6.使用switch语句,不要省略break或default语句(就是字面意思,容易跨分支)【强制】7、使用大写的L而不是小写的l(l真的很像1)【建议】8.避免在一条语句中声明或赋值多个变量(可读性和可测试性大大降低,不用担心)[建议]9.避免给临时变量分配过多的角色(即在同一个方法中,不要定义一个临时变量做多个事情)[建议]10.尽量用Enum代替Integer类型的代码常量(不用懂枚举多香)[建议]11.避免使用复杂的条件表达式或分支(即如果多个条件在同一行或在同一个代码块,最好拆分开)【建议】12、不要使用正则表达式,避免It(需要熟悉正则语法,知道度娘经常涉及的正则表达式)【必读】章节4方法优化技巧1.最小优化原则(设计类,pulic、protected、private、friendly等修饰符,慎用,想用就用)【必读】2.hasCode和equals是孪生兄弟(需要一起改写,生到死)【强制】3.小心str.equals("xx")(这个用法很容易报异常,最好用"xx".equals(str))[建议]4.实现方法需要检查参数的有效性(字面意思)[建议]5.避免使用可变参数(虽然可变参数的好处很多,但是过于笼统的参数方法往往会带来潜在的风险使用时)[建议]6.避免参数过长超过7个的方法(即超过7个参数,需要考虑使用对象来传递)[建议]7.避免使用过时的API(字面意思,这些API一定要换成新的,性能和安全性会更有保障)【建议】8.避免重新造轮子(比如判断字符串是否为空,commons-lang.jar包已经有了,比你写的靠谱。commons-beanutils.jar是Bean工具包,commons-collections.jar是集合处理工具包,joda-time.jar是时间处理工具包,处理国际化日期。优雅封装)[建议]9.你需要瘦身臃肿的代码(字面意思)[建议]第5章如何保证多线程代码的质量1.不要重写start()方法(你直接调用它如果重写call这个方法太好了,为什么要重写)【强制】2.避免使用非线程安全的初始化方式(比如单例模式的饿汉式,会使用synchronized同步锁)【强制】】Chapter6如何优化类和Interface1.避免创建不必要的对象(这是字面意思,不仅降低程序性能,还会占用堆内存)【必修】2.必须进行手术关于臃肿的类(如何操作,仁者见仁智者见智)【强制】3.避免在接口中实现代码(接口是一种契约,如果不需要,只是对实现者的一种约束)【必读】第七章如何正确使用异常1、避免定义继承Error或Throwable子类(这是明文禁止的,可以使用继承Exception)【必读】2、避免抛出RuntimeException或Exception(不要抛出一般异常,你需要细化成什么样的异常)[建议]3.避免在finally块中抛出中间处理返回值(finally块中的代码必须执行,容易覆盖块外的值这里处理时)【建议】4.向用户反馈优雅的异常信息(默认的异常信息是给程序员看的,我们需要打包返回给用户)【强制】第8章如何优化代码性能1.避免在拼接大量字符串时使用“+”(这个性能真的很差,使用StringBuild或StringBuffer)【强制】2.避免在循环体中生成临时对象(字面意思)【强制】3.干净upafterfileoperations(即资源用完就关闭)【必读】第9章架构优化1.单一职责原则2.接口隔离原则3、依赖倒置原则4、里氏代换原则其他章节涉及优化借助工具模板进行项目包和代码风格的优化。相信每个公司都有相应的规定,这里就不一一列举了。文末告一段落,希望本文对您有所帮助,我们下期再见!
