Java开发中的一些规范和技巧

记录一下自己容易犯的一些错误和一些开发技巧,大家有好建议可以分享一下

1.包名尽量小写,复杂的名称建议拆成几个包

2.经常用到的常量可以写成一个常量类,而不要直接在代码里写成字符串

3.遇到常量和某个值做比较时(尤其是equal判断是否相当),建议将常量写在前面,这样可以避免空指针异常。

4.List集合常用方法

//list = {"1","2","2","3","4","5",}

//1、去重,返回新list
List list = ...
Set set = new HashSet<>();
set.addAll(list);
List newList = new ArrayList<>();
newList.addAll(set);

//2、遍历 也可以用list.stream().forEach()
list.forEach(i -> {
    System.out.println(i);
})

//3、遍历,返回新集合
//这里遍历对象po的集合,取出对象的id放到新的集合里并用set进行去重
Set reAuthSet = poList.stream().map(Po::getId).collect(Collectors.toSet());

//4、过滤
list.stream().filter(u -> !"2".equals(u))

5.对象复制

最简单的:

import org.springframework.beans.BeanUtils;

//把source复制给target
//缺点,性能不高,复杂对象如List无法复制
BeanUtils.copyProperties(source, target); 
  

最好的:

新写一个对象复制类

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

@Mapper
public interface UserConvert {

    OrgConvert INSTANCE = Mappers.getMapper(OrgConvert.class);

    //基本对象复制
    UserVo getVo(UserDTO userDTO);

    //复杂对象复制
    List getUserVOList(List userPos);

    //特殊情况,将a属性复制给b
    @Mappings({
            @Mapping(source = "a", target = "b")
    })
    UserVO getUserVo(UserPo po);

}

使用:

userVo = UserConvert.INSTANCE.getUserVO(userPo);

6.尽量不用在代码里返回null值,

如果没有数据,你可以这样写:

// 返回值类型为集合
return Collections.emptyMap();

// 返回值类型为对象
return new Vo();

你可能感兴趣的:(java)