一、写有意义的注释
类、方法、复杂的逻辑都应该添加有意义的注释。
对于类:包含类的功能说明、作者、修改者
对于方法:包含方法说明、入参和结果说明
对于业务逻辑:必须写清楚注释
二、项目拆分合理
目前都是用MVC模式:controller、service、dao、mapper。如果业务太多,一个service包下就成千上百个类。就需要去拆分。
service包下可以根据业务做拆分:拆分成登录、用户、权限等
也可以根据不同业务划分不同的modles包。
三、不在循环里远程调用、或数据库
远程操作或者数据库操作都是比较消耗网络、IO资源。应尽量用批量一次性查回。
如果是操作数据库,尽量分批查询,500一次。
四、封装方法形参
方法参数过多,就必须用一个对象去接受。
五、封装通用摸板
一般来说直接使用模板模式。
六、封装复杂判断逻辑
写一个私有方法把复杂的判断逻辑放进去,放回boolean类型。
七、保持性能
避免创建非必要对象,异步处理,使用缓冲流,减少IO操作等。
八、可变参数的配置化处理
日常开发中。可能遇到可变参数,比如:用户多少天没登录就注销、运营活动、不同节日红包切换、订单多久没付款就删除等,这种可变的参数不应该写死,要做配置化处理:可以放到数据库表中;可以放到项目配置文件里。
九、会总结使用工具
日常开发最好是使用工具类。
十、控制方法的复杂度
一个方法里最好不要超过60行代码。进行方法的拆分。
十一、在finally块中对资源进行释放。
十二、把日志打印好
一般方法的入参、出参、校验、异常都要打印日志。
十三、处理好异常
- 尽量不使用e.printStackTrace(),而是使用log打印,因为e.printStackTrace()占内存。
- catch块中建议打印具体的exception。
- 用finally块关闭流资源,或者使用try-with-resource。
- 自定义封装异常,不丢弃原始异常信息。Throwable cause
- 运行时异常RuntimeException应该先检查,比如空指针的处理。
- 注意异常匹配的顺序,优先捕获的具体异常。
十四、接口的兼容性
修改了对外的旧接口而不做兼容,就会导致系统发版失败。