项目框架已经搭好用 springboot3 和 JPA ,然后他居然在 repository 里写了个 insert 方法,而且还是用 nativeSQL ,当然可能人家没用过 JPA ,那也算了。
然后一个发邮件的功能,他说调试了一天才搞定,然后我一看他的代码,在发邮件的函数里用 java 自带的 http client ,每发一封就 new 一个,就算不用 sprigbooot 的 rest template ,好歹也用一下 okhttpclient 吧,而且也不用 bean 管理一下。然后发邮件有个验证码机制,有有效期之类的,我本来的想法是用单独的表管理所有验证方式,比如注册验证邮件,改密码验证邮件,还有大概率手机验证,2FA 之类的,然后他直接把 token 和过期时间存 user 表里了。
还有很多小细节,比如全局捕获异常也不设置 http 状态码,直接默认都 200 (项目定的 rest 风格),有 loback 也不用,异常直接 printstack ,也从不管已经存在的代码,比如已经有 util 包和 Util 类了,还要新建 utils 包和 Util 类,异常码也是,明明有个 user_not_found 了,还要在一个他写的重复判断用户是否存在的逻辑里加一个 no_email 的错误码,反正我也不想管了,把我负责的 api 弄稳妥就行。
我是抱着想写好质量代码的心,然后遇到一个完全不管代码质量的人合作,真是糟心呐!
2. 使用 java11 的 native http client 没啥问题,他这里的问题是没有定义一个全局公用的 client
3. 看起来你的同事代码习惯不太好,喜欢简单粗暴完成任务,追求短平快
代码总体风格和质量控制,其实靠同事之间推动是有一点难度的。如果 leader 不重视这事儿,同事之间直接沟通,如果加上不能很好的把握沟通技巧(所谓低情商表达),其实很容易转化为同事矛盾。弥补认知差异是困难的。
「凡是能真正把他人怎么阅读代码放在心上的软件工程师,即使一开始不具备非常好的设计技巧,随着时间的推移,也能很快学会这些技巧。心中有他人是非常重要的意识和素养。」——《软件设计:从专业到卓越》
只不过话语权最高的那个人说哪个好, 然后就得有人遵守, 仅此而已,代码品味有不同, 你个人可以喜欢或者不喜欢, 但是如果之前已经在系统里面的呢? 难道你要全部改掉?要能够接受一个系统就是多方面妥协的产物, 不是你要求完美, 它就能完美,要不然, 你接受不了的地方, 那可多着呢!
很担心他走了,那一堆垃圾如果给我,该怎么维护……