加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

没落 Java 代码的“坏味道”

发布时间:2019-10-12 07:55:28 所属栏目:建站 来源:王超
导读:代码中的坏味道,如私欲如尘埃,天天都在增进,一日不去破除,便会越累越多。假如勤奋去破除这些坏味道,不只能进步本身的编码程度,也能使代码变得精白无一绝不彻。这里,一向从事Java研发相干事变的阿里高级舆图技能工程师王超,清算了一般事变中的一些

正例:

  1. // 挪用别人的处事获取到list 
  2. List<Integer> list = otherService.getList(); 
  3. if (list instanceof RandomAccess) { 
  4.     // 内部数组实现,可以随机遇见 
  5.     System.out.println(list.get(list.size() - 1)); 
  6. } else { 
  7.     // 内部也许是链表实现,随机遇收服从低 

频仍挪用 Collection.contains 要领请行使 Set

在 java 荟萃类库中,List 的 contains 要领广泛时刻伟大度是 O(n) ,假如在代码中必要频仍挪用 contains 要领查找数据,可以先将 list 转换成 HashSet 实现,将 O(n) 的时刻伟大度降为 O(1) 。

反例:

  1. ArrayList<Integer> list = otherService.getList(); 
  2. for (int i = 0; i <= Integer.MAX_VALUE; i++) { 
  3.     // 时刻伟大度O(n) 
  4.     list.contains(i); 

正例:

  1. ArrayList<Integer> list = otherService.getList(); 
  2. Set<Integer> set = new HashSet(list); 
  3. for (int i = 0; i <= Integer.MAX_VALUE; i++) { 
  4.     // 时刻伟大度O(1) 
  5.     set.contains(i); 

让代码更优雅

长整型常量后添加大写 L

在行使长整型常量值时,后头必要添加 L ,必需是大写的 L ,不能是小写的 l ,小写 l 轻易跟数字 1 夹杂而造成误解。

反例:

  1. long value = 1l; 
  2. long max = Math.max(1L, 5); 

正例:

  1. long value = 1L; 
  2. long max = Math.max(1L, 5L); 

不要行使邪术值

当你编写一段代码时,行使邪术值也许看起来很明晰,但在调试时它们却不显得那么明晰了。这就是为什么必要把邪术值界说为可读取常量的缘故起因。可是,-1、0 和 1不被视为邪术值。

反例:

  1. for (int i = 0; i < 100; i++){ 
  2.     ... 
  3. if (a == 100) { 
  4.     ... 

正例:

  1. private static final int MAX_COUNT = 100; 
  2. for (int i = 0; i < MAX_COUNT; i++){ 
  3.     ... 
  4. if (count == MAX_COUNT) { 
  5.     ... 

不要行使荟萃实现来赋值静态成员变量

对付荟萃范例的静态成员变量,不要行使荟萃实现来赋值,应该行使静态代码块赋值。

反例:

  1. private static Map<String, Integer> map = new HashMap<String, Integer>() { 
  2.     { 
  3.         put("a", 1); 
  4.         put("b", 2); 
  5.     } 
  6. }; 
  7.  
  8.  
  9. private static List<String> list = new ArrayList<String>() { 
  10.     { 
  11.         add("a"); 
  12.         add("b"); 
  13.     } 
  14. }; 

正例:

  1. private static Map<String, Integer> map = new HashMap<>(); 
  2. static { 
  3.     map.put("a", 1); 
  4.     map.put("b", 2); 
  5. }; 
  6.  
  7.  
  8. private static List<String> list = new ArrayList<>(); 
  9. static { 
  10.     list.add("a"); 
  11.     list.add("b"); 
  12. }; 

提议行使 try-with-resources 语句

Java 7 中引入了 try-with-resources 语句,该语句能担保将相干资源封锁,优于原本的 try-catch-finally 语句,而且使措施代码更安详更简捷。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读