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