• 1.OOP重点规约


    一.OOP重点规约

    1.类中的静态变量或静态方法,直接用类名访问即可,不要去用类的对象访问(会增加成本)。

    2.覆写方法要加@override

    3.相同参数类型,相同业务含义,才可以使用Java的可变参数,避免使用Object。(尽量不用可变参数编程)

    4.外部使用的接口,不要修改方法名,如果过时加上@Deprecated注解并且注释说用可用的新的方法名来代替

    5.equals方法容易抛出空指针异常,使用Objects.equals(xxx,yyy)来代替

    6.所有相同类型包装类对象之间值比较使用equals方法。

    【Java的8大基本类型使用“==”比较都是值比较,Java的包装类使用“==”比较是对象之间的地址比较。对于Integer类型从-128到127在IntegerCache中已经缓存了不管创建多少个这个范围的Integer都是一个地址使用“==”是true,一旦超出这个范围再使用“==”比较就是两个不同对象了为false。所以包装类型值比较使用equals方法】

    7.关于基本类型和包装类型的使用标准如下:

    (1)所有的POJO类属性必须使用包装类型:如果不是包装类型可能会产生空指针异常,例如:当调用其他方法为属性的setter方法参数赋值时,如果参数为null,如果该属性是基本类型则报空指针异常,如果为包装类型不报错。

    (2)RPC方法的返回值和参数必须使用包装类型:RPC方法为“远程过程调用”,就是别人需要调用你的方法获得返回值,返回类型和参数必须为包装类型

    (3)所有局部变量使用基本类型

    8.定义DO/DTO/VO等POJO类时,不要设置任何属性默认值

    9.序列化的类新增加属性时,不要修改serialVersionUID字段,如果修改了会造成反序列化失败。如果想要不兼容老版本则可以修改serialVersionUID字段。

    10.在循环体中,字符串连接方式需要使用StringBuilder的append方法进行拼接。不要使用String的+号拼接字符串,性能浪费。

    String text = "Hello";
    for(int i = 0 ; i < 100; i++){
        text = text + "Hello";    //此处会先创建一个StringBuilder变量内容和text的内容一样,再进行拼接最后调用toString方法返回给text
    }

    11.慎用Object的clone方法来拷贝对象。由于Object的clone方法为浅拷贝,需要深拷贝则需要重写clone方法。

    【8中基本数据类型和String类型为不可变数据类型可以使用浅拷贝,其他都需要深拷贝】

  • 相关阅读:
    解决远程连接mysql很慢的方法(网络正常)
    分布式系统中可用性及容错性的区别
    设计模式个人思考
    记第一次多用户在Git提交代码
    Git远程分支的回退
    Linux模拟控制网络时延
    ubuntu 软件
    编译cubieboard android 源码过程详解之(六):pack
    编译cubieboard android 源码过程详解之(五):make
    编译cubieboard android 源码过程详解之(四):extract-bsp
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12374408.html
Copyright © 2020-2023  润新知