没落 Java 代码的“坏味道”
副问题[/!--empirenews.page--]
代码中的"坏味道",如"私欲"如"尘埃",天天都在增进,一日不去破除,便会越累越多。假如勤奋去破除这些"坏味道",不只能进步本身的编码程度,也能使代码变得"精白无一绝不彻"。这里,一向从事Java研发相干事变的阿里高级舆图技能工程师王超,清算了一般事变中的一些"坏味道",及整理要领,供各人参考。 让代码机能更高 必要 Map 的主键和取值时,应该迭代 entrySet() 当轮回中只必要 Map 的主键时,迭代 keySet() 是正确的。可是,当必要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值机能更佳。 反例:
正例:
应该行使Collection.isEmpty()检测空 行使 Collection.size() 来检测空逻辑上没有题目,可是行使 Collection.isEmpty()使得代码更易读,而且可以得到更好的机能。任何 Collection.isEmpty() 实现的时刻伟大度都是 O(1) ,可是某些 Collection.size() 实现的时刻伟大度也许是 O(n) 。 反例:
正例:
假如必要还必要检测 null ,可回收CollectionUtils.isEmpty(collection)和CollectionUtils.isNotEmpty(collection)。 不要把荟萃工具传给本身 另外,因为某些要领要求参数在执行时代保持稳固,因此将荟萃转达给自身也许会导致非常举动。 反例:
荟萃初始化只管指定巨细 java 的荟萃类用起来异常利便,可是看源码可知,荟萃也是有巨细限定的。每次扩容的时刻伟大度很有也许是 O(n) ,以是只管指定可预知的荟萃巨细,能镌汰荟萃的扩容次数。 反例:
正例:
字符串拼接行使 StringBuilder 一样平常的字符串拼接在编译期 java 会举办优化,可是在轮回中字符串拼接, java 编译期无法做到优化,以是必要行使 StringBuilder 举办替代。 反例:
正例:
List 的随机遇见 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |