阿里巴巴java开发手册笔记

  1. pojo类中布尔类型的变量都不要叫is前缀,否则部分框架解析会引起序列化错误。
  2. 如果在模块、接口、类、方法中使用了设计模式,在命名时体现具体模式。
  3. 接口类中的方法和属性不要加任何修饰符号。
  4. service/dao层命名方法规约: 获取单个对象用get做前缀;获取多个对象用list做前缀;获取统计值的方法用count做前缀;插入用save/insert做前缀;删除的方法用remove/delete做前缀;修改用update。
  5. long或Long初始值赋值是使用大写的L。
  6. 避免通过一个类的对象引用访问此类的静态变量或静态方法
  7. object的equals方法容易抛NPE,应使用常量或确定有值的对象来调用equals。
  8. 构造方法里禁止加入任何业务逻辑,如果有初始化逻辑,放在init方法中。
  9. 类内方法定义的顺序是:公有方法或保护方法 > 私有方法 > getter/setter 方法。
  10. ArrayList的sublist结果不可以强制转换成ArrayList,会抛类型转换异常。
  11. 使用结合转数组的方法,必须使用集合的toArray(T[] array),传入类型完全一样的数组,大小是list.size().
  12. 使用Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法。它的add/remove/clear方法会抛出UnsupportOperationException异常。
  13. 不要在foreach循环里进行元素的remove/add操作。remove元素使用Iterator方式,并发操作加锁。
  14. Comparator要满足:可传递,参数相反结果相异,参数相同结果相同。
  15. 在集合初始化时,指定集合初始值大小
  16. entryset遍历map类集合K/V,而不是用KeySet方式遍历。
  17. 线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。
  18. 线程池不允许使用executors创建,而是通过ThreadPoolExecutor的方式创建。
  19. SimpleDateFormat是线程不安全的类,一般要定义为static变量,如果定义为static,必须加锁,或者使用DateUtil工具类。
  20. 在switch的块内必须包含一个default语句且放在最后,即时什么代码都没有。
  21. 避免使用单行编码方式,加大括号分行。
  22. 在高并发场景中,避免使用“等于”判断作为中断或退出的条件。
  23. 避免采用取反逻辑运算符。
  24. 捕获异常是为了处理它,如果不想处理,向上抛出。
  25. 自动拆箱可能会产生NPE
  26. 隶属用户个人的页面或者功能必须进行权限控制校验
  27. 用户敏感数据禁止直接展示,必须对展示数据进行脱敏
  28. 数据库建表时表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint(01代表是,0代表否)
  29. 表名、字段名必须用小写字母或者数字,禁止出现数字开头。
  30. 主键索引名为pk_字段名,唯一索引名为uk_字段名,普通索引为idx_字段名
  31. 小数类型为decimal,禁止使用float,double
  32. 如果存储的字符串长度几乎相等,则应该使用char定长字符串类型
  33. 表必备三字段:id,gmt_create,gmt_modified。id为主键,类型为unsigned bigint、单表时自增、步长为1。gmt_create(建表时间)和gmt_modified(修改时间)的类型为date_time类
  34. 型。
  35. 表的命名最好加上“业务名称_表的作用”
  36. 当单表行数超过500万行或者单表容量超过2gb,才推荐分库分表
  37. 不要使用count(列名)替代count(),count()会统计值为NULL的行
  38. 当某一列的值全为NULL时,count(col)的返回值为0,而sum(col)的返回结果为NULL,因此使用sum()时注意NPE问题。
  39. NULL与任何值比较都为NULL
  40. 一律不要使用*作为查询的字段列表,需要哪些字段必须明确写明
  41. 防止sql注入

猜你喜欢

转载自blog.csdn.net/sayWhat_sayHello/article/details/80783169