版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38004638/article/details/102062660
一、 编程规约 (一) 命名风格
(三) 代码格式
(四) OOP规约
(五) 集合处理
说明:使用 toArray 带参方法,数组空间大小的 length: 1) 等于 0,动态创建与 size 相同的数组,性能最好。 2) 大于 0 但小于size,重新创建大小等于 size 的数组,增加 GC负担。Java 开发手册12/443) 等于 size,在高并发情况下,数组创建完成之后,size 正在变大的情况下,负面影响与上相同。 4) 大于 size,空间浪费,且在size 处插入 null 值,存在 NPE隐患。
反例:String[] array= (String[]) list.toArray();运行,报错
正例:List list = new ArrayList<>(); list.add("1"); list.add("2"); Iterator iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (删除元素的条件) { iterator.remove(); } }调用iterator的删除方法:1.首先检查集合2.删除元素3.下一个元素的索引位置cursor重新赋值4.检查集合参数重新赋值
反例:for (String item : list) { if ("1".equals(item)) { list.remove(item); } }总结:如果我们我们用foreach删除的元素刚好是最后一个,删除完成前下一个元素的索引位置cursor刚好等于集合长度size的大小。但是,删除完成后size的数量减1,但是cursor并没有变化。导致下一次循环不相等继续向下执行,导致检查数组不通过,抛出java.util.ConcurrentModificationException
15. 【推荐】使用 entrySet遍历 Map类集合 KV,而不是 keySet方式进行遍历。 说明:keySet 其实是遍历了2 次,一次是转为 Iterator 对象,另一次是从 hashMap 中取出key所对应 的 value。而entrySet 只是遍历了一次就把 key和value 都放到了 entry中,效率更高。如果是 JDK8, 使用 Map.forEach 方法。
正例:values()返回的是 V值集合,是一个 list 集合对象;keySet()返回的是K 值集合,是一个 Set 集合 对象;entrySet()返回的是K-V值组合集合。
(六) 并发处理
(七) 控制语句
(八) 注释规约
(九) 其它
二、异常日志(一) 异常处理
(二) 日志规约
三、单元测试
四、安全规约
五、MySQL数据库(一) 建表规约
(二) 索引规约
(三) SQL语句
(四) ORM映射