Java开发习惯

修改完代码自测一下

单元测试

及时关闭IO流等资源

public void testIO() throws IOException {
      FileOutputStream fos = null;
      try {
          fos = new FileOutputStream("");
      } catch (IOException e) {
          log.error("IOException:{}", e);
      } finally {
          if (fos != null) {
              fos.close();
          }
      }

  }

代码采取措施,避免允许错误

写完代码,模拟一下多线程执行会怎样,注意并发一致性问题

比如下面这段代码:

查询 可不可以 操作,再进行 对应的操作,比如 增加金额
但是 查询+增加金额 不是 原子操作,多线程 下会有问题~

if (isAvailable(ticketId)) {
    1. 给现金增加操作
    2. deleteTicketById(ticketId)

} else {
    return "没有可用现金券";
}

写完 SQL 去数据库跑一下,用explain查看执行计划

封装方法形参

方法参数过多,可以封装一个对象出来

   //反例
    public void getUserInfo(String name, String age, String sex, String idNo) {

    }

    // 正确
    public void getUserInfo2(UserInfoParamDTO paramDTO) {

    }

    @NoArgsConstructor
    @Setter
    @Getter
    // 开启 链式调用set方法
    @Accessors(chain = true)
    class UserInfoParamDTO {
        private String name;
        private String age;
        private String sex;
        private String idNo;
    }

封装复杂的逻辑判断条件

public void test(UserStatus userStatus) {
     if (isUserActive(userStatus)) {
         //doSomeThing
     }
 }

 private boolean isUserActive(UserStatus userStatus) {
     return userStatus != UserStatus.BANNED && userStatus != UserStatus.DELETED && userStatus != UserStatus.NOACCESS && userStatus != UserStatus.NOTEXISTS

 }

用String.format()拼接字符串

String requestUrl = "http://susan.sc.cn?userName=%s&age=%s&address=%s&sex=%s&roledId=%s";

String url = String.format(requestUrl,userName,age,address,sex,roledId);


注释尽可能全面,写有意义的注释

在这里插入图片描述

项目拆分合理的目录结构

在这里插入图片描述

不在 循环中操作数据库,优先批量

在这里插入图片描述

保持 优化性能的嗅觉

会使用工具类!

可以抽取方法中的一些代码

抽取代码:可复用的、优化代码逻辑的

考虑接口的兼容性!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值