实际开发的debug记录

写一下实际开发中大哥、deepseek为我指出的各类问题

2025-8-7:

1.new Date()得到的数据不能直接用于展示,需要格式化成正确形式再传给前端:

new Date()得到的数据是这样的

Thu Aug 7 14:25:43 CST 2025

可以使用hutool里的DateUtil,例如:

String dateStr = DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");

2.集合判空,我在第一次使用时经常会出现NPE,这里也推荐使用hutool的小工具:

CollUtil.isEmpty(collection);//isNull Or isEmpty

集合转字符串,hutool有直接帮你实现的小工具

CollUtil.join(collection,",");

3.Str的判null与空,这个不是hutool的小工具了,是java自带的,isEmpty(null or "")和isBlank(null or "" or "  ")

StringUtils.isEmpty(str);

2025-8-18:

今天关于规范性有3个问题,一个我认为是前人开发不规范的问题:

1.if后面必须要跟大括号,保证纪律性。不能因为一行代码就直接缩写而且不加括号。(虽然这个是前人留下的,但是我也会经常习惯一行判断不写大括号)

2.比较某类的两个对象的属性,直接通过a.getName().equals(b.getName())是不妥当的,这样很容易发生NPE。替代的方案是

Objects.equals(a.getName(),b.getName);

这个方法主要用于安全的判断,他内部构造其实也很简单:

public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}

3.原controller有verify(str... args)、aVerify(str... args)、bVerify(str... args)。现在我们将他们统一成verify(str... args)一个方法,假如我们负责后端,那么我们的想法应该是尽量去最小幅度的修改代码

我的做法:废弃aVerify(str... args)、bVerify(str... args),同时修改全部能搜到的前端接口;

大哥教我的做法:尽量保持各个方法不变,可以尝试在aVerify(str... args)中调用verify(str... args)。

4.遇到一个前端接收参数的问题:edit和view两个方法返回值明明一样,但是页面上显示的却不一样。

因为json结构体传的有点套,假设一个parent类中,包含了childName、child两个字段。然后这个前端在edit上接收的是parent.child.childName,而view中接收的却是parent.child。这就发生了如果在不知情(指接手一个狮山先进行一个太黑的黑盒测试)测试的情况下仅修改单表的数据无法保证数据一致性。个人感觉很蠢的一个问题,出现在一个老项目中:既然已经使用了冗余字段,那么在查询并返回的内容应该统一优先使用冗余字段避免产生不必要的错误。而且edit是对parent而言,优先修改parent,再在代码内部自己修改对应的child也并不困难。

posted @ 2025-08-18 17:30  天启A  阅读(11)  评论(0)    收藏  举报