当前位置:   article > 正文

写代码容易犯的一些小错误和踩的一些坑_所有的 pojo 类属性必须使用包装数据类型

所有的 pojo 类属性必须使用包装数据类型
1、关于基本数据类型与包装数据类型的使用标准如下:
  • 所有的POJO类属性必须使用包装数据类型。
  • RPC方法的返回值和参数必须使用包装数据类型。
  • 所有的局部变量推荐使用基本数据类型。
2、单个方法的总行数不超过80行。
3、避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。
4、POJO类中的任何布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误
错误案例:      
    public class DemoDO{
        Boolean isSuccess;
        Boolean isDelete;
    }

正确写法:
    public class DemoDO{
        Boolean success;
        Boolean delete;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
5、循环体内,字符串的联接方式,使用StringBuilder的append方法进行扩展。

说明:反编译出的字节码文件显示每次循环都会new出一个StringBuilder对象,然后进行append操作,最后通过toString方法返回String对象,造成内存资源浪费。

错误案例:
    String result;
    for (String string : tagNameList) {
        result = result + string;
    }

        
            
正确写法:
    StringBuilder stringBuilder = new StringBuilder();
    for (String string : tagNameList) {
        stringBuilder.append(string);
    }
    String result = stringBuilder.toString();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
6、集合初始化时,指定集合初始值大小。

说明:HashMap使用如下构造方法进行初始化,如果暂时无法确定集合大小,那么指定默认值(16)即可。

错误案例:
	Map<String, String> map = new HashMap<String, String>();
    
       
正确写法:
	Map<String, String> map = new HashMap<String, String>(16);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
7、所有的包装类对象之间值的比较,全部使用equals方法比较。

说明:对于Integer var=?在-128至127之间的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。

	Integer a = 235;
    Integer b = 235;
    if (a.equals(b)) {
        // code
    }
  • 1
  • 2
  • 3
  • 4
  • 5
8、Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
错误案例:   
	public void f(String str){
        String inner = "hi";
        if (str.equals(inner)) {
            System.out.println("hello world");
        }
    }
       
正确写法:
	public void f(String str){
        String inner = "hi";
        if (inner.equals(str)) {
            System.out.println("hello world");
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
9、抽象类命名使用Abstract或Base开头
  abstract class BaseControllerDemo{
    }

    abstract class AbstractActionDemo{
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
10、除常用方法(如getXxx/isXxx)等外,不要在条件判断中执行复杂的语句,将复杂逻辑判断的结果赋值给一个有意义的布尔变量,以提高可读性。

说明:很多if语句内的逻辑相当复杂,阅读者需要分析条件表达式的最终结果,才能明确什么样的条件执行什么样的语句,那么,如果阅读者分析逻辑表达式错误呢?

错误案例:
    if ((file.open(fileName, "w") != null) && (...) || (...)) {
        // ...
    }
			
        
            
正确写法:
    boolean existed = (file.open(fileName, "w") != null) && (...) || (...);
    if (existed) {
        //...
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/904617
推荐阅读
相关标签
  

闽ICP备14008679号