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

没落 Java 代码的“坏味道”

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

正例:

  1. public static Result[] getResults() { 
  2.     return new Result[0]; 
  3.  
  4.  
  5. public static List<Result> getResultList() { 
  6.     return Collections.emptyList(); 
  7.  
  8.  
  9. public static Map<String, Result> getResultMap() { 
  10.     return Collections.emptyMap(); 
  11.  
  12.  
  13. public static void main(String[] args) { 
  14.     Result[] results = getResults(); 
  15.     for (Result result : results) { 
  16.         ... 
  17.     } 
  18.  
  19.  
  20.     List<Result> resultList = getResultList(); 
  21.     for (Result result : resultList) { 
  22.         ... 
  23.     } 
  24.  
  25.  
  26.     Map<String, Result> resultMap = getResultMap(); 
  27.     for (Map.Entry<String, Result> resultEntry : resultMap) { 
  28.         ... 
  29.     } 

优先行使常量或确定值来挪用 equals 要领

工具的 equals 要领轻易抛空指针非常,应行使常量或确定有值的工具来挪用 equals 要领。虽然,行使 java.util.Objects.equals() 要领是最佳实践。

反例:

  1. public void isFinished(OrderStatus status) { 
  2.     return status.equals(OrderStatus.FINISHED); // 也许抛空指针非常 

正例:

  1. public void isFinished(OrderStatus status) { 
  2.     return OrderStatus.FINISHED.equals(status); 
  3.  
  4.  
  5. public void isFinished(OrderStatus status) { 
  6.     return Objects.equals(status, OrderStatus.FINISHED); 

列举的属性字段必需是私有不行变

列举凡是被当做常量行使,假如列举中存在民众属性字段或配置字段要领,那么这些列举常量的属性很轻易被修改。抱负环境下,列举中的属性字段是私有的,并在私有结构函数中赋值,没有对应的 Setter 要领,最好加上 final 修饰符。

反例:

  1. public enum UserStatus { 
  2.     DISABLED(0, "禁用"), 
  3.     ENABLED(1, "启用"); 
  4.  
  5.  
  6.     public int value; 
  7.     private String description; 
  8.  
  9.  
  10.     private UserStatus(int value, String description) { 
  11.         this.value = value; 
  12.         this.description = description; 
  13.     } 
  14.  
  15.  
  16.     public String getDescription() { 
  17.         return description; 
  18.     } 
  19.  
  20.  
  21.     public void setDescription(String description) { 
  22.         this.description = description; 
  23.     } 

(编辑:湖南网)

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

热点阅读