代码篇
1. 循环尤其注意,循环体内定义变、常量...都是错误的
2. 多重if判断可使用map替代!!!
3. 避免使用else语句,替代方案:卫语句、状态模式or策略模式!!!
4. for循环中嵌套if判断,可以使用算子替代。实现可扩展性和维护性,省去循环
5. 项目中尽可能多得使用commons工具类
6. 参数多写JavaBean来封装
7. 常量根据业务来划分,代码中尽量直接出现常数
8. 只对非稳定的代码捕捉异常,异常从小到大依次捕捉,分别处理
9. 多写注释,建议每块业务代码都加注释!!!(读书得写笔记,写文章得打草稿),项目中缺少必要的注释,简洁有力的注释有助于开发的效率和他人的阅读!!!
10. 重复代码的问题,抽取!!!能复制就坚决不黏贴,重复代码会导致后期的改动量加大,容易遗漏;重复代码很关键,质量尤为重要。项目中出现了大量重复代码!!!
11. 集合初始化时,尽量指定集合初始化的大小,减少消耗
12. 对于明确不使用的代码建议直接清除,或者加todo及时清除,避免出现垃圾
13. Final可以提高程序的相应效率
14. StringBuilder替代String
13.23中设计模式对应了不同的场景,建议项目中的业务从设计模式的角度出发,增加代码的维护性和可扩展性\
15. Redis,mq的使用
数据库
1. 建表规范
表名字段名的规范
存储的字符串几乎相等,使用char
字段和注释永远保持一致
小数类型为decimal
合适的字符存储长度(节省表空间) tinyint smallint int 和bigint的选择
字段和注释永远保持一致
长度基本不变的字符串,使用char定长字符串类型
2.sql优化
对于一成不变的表,可以在相关表增加冗余字段,减少关联查询,提高性能
Sql语句全部大写,减少解析成本
任何较长的sql语句的都存在优化的空间,要尽可能的对较长的sql语句进行优化
3.索引
没有唯一索引-------脏数据、效率低下
区分度最高的和等号放在最左边
利用延迟关联或者子查询优化多分页场景
SELECT a.* FROM 表 1 a, (select id from 表 1 where 条件 LIMIT 100000,20 ) b where a.id=b.id
多表关联的时候被关联的字段需要有索引
索引长度与区分度一对矛盾体,需要建立合理的索引长度
使用搜索引擎来替代模糊查询,这个国网貌似正在做
使用覆盖索引来进行查询操作,避免回表操作,提高效率。应用:查询指定列数据的时候!!!
Order by最后是组合索引的一部分,索引的有序性一定需要注意
Sq建立索引的目标达到ref级别
...
4.Mybatis
1. 不使用*作为查询的字段列表,减少解析,避免不一致
select j.* from shop_store_joinin
2. 不要写一个大而全的数据更新接口,传入POJO类。例如商户入驻,只是更新一个状态,却对所有的字段进行了一次更新操作,一来存在风险,二来进行了多余的判断和操作,三增加了存储