java开发避免bad smell

本文介绍了Java编程中的一些最佳实践,包括避免使用某些关键字如record和var,如何正确进行自动类型推断,简化方法返回值处理,泛型的最佳使用方式,以及遵循良好的代码风格如变量声明、lambda表达式的使用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 关键字

避免出现jdk新版本中的关键字

关键字record jdk14
record Point(int x,inty){} 
关键字var
var str="heelo"
2 自动类型推断
List<String> list = new ArrayList<String>(); bad smell
List<String> list = new ArrayList<>();
3 不处理方法返回值,直接返回
	public SysUserEntity queryByUserName(String username) {
		SysUserEntity user = baseMapper.queryByUserName(username);
		return user;
	} 
	
	public SysUserEntity queryByUserName(String username) {
		return baseMapper.queryByUserName(username);
	}
4 泛型处理最多的bad smell
    @PutMapping("/audit/")
    public Result audit(){
        //TODO
        return new Result();
    }
    //如果没有相应的类可以写成Object
    @PutMapping("/audit/")
    public Result<Object> audit(){
        //TODO
        return new Result<>();
    }
    
    //PageUtils类必须声明泛型
    @GetMapping("/getReviewsList")
    public Result<PageUtils<ReviewsVo>> getReviewsList( Map<String,Object> params){
        PageUtils<ReviewsVo> page  =  articleReviewsService.getList(params);
        return new Result<PageUtils<ReviewsVo>>().ok(page);
    }
5 生成作者信息
/**
 * @Description TODO
 * @Author zhubuer
 * @Date 2021/8/4
 **/
 public class DoLikesController{
 
 }
 不能包含TODO
6声明变量
//声明顺序
public static final str  = "hello";
//使用驼峰标识
web_type  bad smell
webType
//方法名首字母小写
public void Deal() bad smell
public void deal()
//包名不能出现大写
cn.lat.common.DTO bad smell
cn.lat.common.dto
//声明多个变量
  Date cst = null, cet = null;
Date cst = null;
Date cet = null;

7多个地方使用相同字符串,声明变量
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,                accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
//使用变量替换
String hz = "cn-hangzhou";
IClientProfile profile = DefaultProfile.getProfile(hz, accessKeyId,                accessKeySecret);
DefaultProfile.addEndpoint(hz, hz, product, domain);
8lambda表达式
  list.forEach(s -> {
                set.add(s.getUserId());
            });
//如果只有一行语句,去除大括号
list.forEach(s -> set.add(s.getUserId()));

//map
stream().map(map -> map.getGroupId())
stream().map(LawyerHasGroupEntity::getGroupId)
9静态util类声明私有构造方法
public class DateUtil{
 private DateUtil(){}
}
10 Controller声明mapping时
@RequestMapping(value = "/miniProgramLogin", method = RequestMethod.GET)
@GetMapping(value = "/miniProgramLogin")
//post换成相应的PostMapping
11方法参数最多四个
public void doSomething(int param1, int param2, int param3, String param4) {
...
}
//超过4个用对象
12字符串相加
 String route = "";
 for (SysDeptEntity dept : subDepts) {
 	route += dept.getRoute().substring(1);
 }
 //避免重复创建对象
  StringBuilder route = new StringBuilder();
  for (SysDeptEntity dept : subDepts) {
  	route.append( dept.getRoute().substring(1));
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值