【编写高质量代码之Java 秦小波 成林 】读书笔记

版权声明:高性能MySQL是第3版,注意mysql版本;很多博客都参考或者直接转载自网络,如果不方便被转载,看到请与我联系 https://blog.csdn.net/ma15732625261/article/details/82390544

前言:

最近要重整旗鼓,开始祸害人间了,呸~开始新一轮博客了,不过也不一定,废不多话,直接从建议9开始

正文:

9、少用静态导入

1、不使用*通配符,除非导入静态常量类(只含常量的类或接口)

2、方法名是明确、清晰表象意义的工具类

10、不在类中覆盖静态导入的变量和方法:原始类中重构

11、显示声明UID:SerialVersionUID流标识符、类版本定义

private static final long SerialVersionVersionUID=xxxxL;

JVM反序列化时,比较UID,异 抛错 :一致性

 

12、避免用序列化类在构造函数中为不变量赋值:序列化类中不适用构造函数为final变量赋值

        反序列化时不执行构造函数、final在构造函数中不会重新赋值 

 

13、避免为final变量 复杂赋值(通过返回值赋值):反序列化时不会被重新赋值

        final修饰的属性不是基本类型时 反序列化 也不会被重新赋值

       保持到磁盘:

          类描述信息:包路径 继承关系 访问权限 变量描述访问权限  方法签名返回值  变量关联类信息 

                                不记录方法、构造函数、static变量等具体实现

                                能去能回,反序列化健壮性

        非瞬态transient、非静态static的实力变量值

 

14、使用序列化类的私有方法巧妙解决部分属性持久化问题:职工工资对外、绩效工资密(同一个类)

      不被序列化:transient关键字:分布式部署不可能了

      新增类、请求端过滤(no)、变更传输契约(改用xml传输、重建web service  no)

     序列化回调:ObjectOutputStream将对象转成流数据时,反射检查类是否要私有 无返回值writeObject方法,有?委托方法序列:默认规则;同样、流中实例化对象……,同样失去分布式部署能力(分布式部署意义不大-so just accept)

 

15、break不可忘,谁的break,case的,记得领回家:严谨

16、易变业务使用脚本语言编写 Java6

      灵活:动态类型、不声明类型直接用,运行期改变

     便捷:解释型语言,依靠解释器解释

17、慎用动态编译

    实现javaFileObject接口,重写getCharContent、openInputStream、openOutputStream或实现SimpleJavaFileObject、forwardingJavaFileObject

     注意:1 框架中慎用 费事费力   2要求高性能的项目勿用   3安全检查  4记录动态编译过程

 

18、避免instanceof非预期结果:左右两个操作数要继承or实现关系 编译通过、只能用于对象判断,左null反false

19、断言不是鸡肋:默认不开启、错继承自Error

    不可使用:对外公开方法中、执行逻辑代码(生产 不启用断言 不执行)

     

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/ma15732625261/article/details/82390544