effect java 學習摘要(6) - 方法

檢查參數的有效性

  • 可以使用android註解,例如 :

     public <T> void register(@NonNull Class<? extends T> clazz) {
    
    }

必要時進行保護性拷貝

  • 對於構造器的每個可變參數進行保護性拷貝是必要的

    public class Period {
    
        private final Date start;
        private final Date end;
    
        public Period(Date start, Date end) {
            this.start = new Date(start.getTime());
            this.end =  new Date(end.getTime());
        }
    
        public Date start() {
            return new Date(start.getTime());
        }
    
        public Date end() {
            return  new Date(end.getTime());
        }
    }

謹慎設計方法簽名

  • 謹慎的選擇方法的名稱. 遵循標準的命名習慣

  • 不要過於追求提供便利的方法. 當一項操作被經常用到的時候, 才考慮爲他提供快捷方式

  • 避免過長的參數列表

    • 把方法分解成多個方法
    • 增加輔助類,來保存參數的分組
    • 從對象構建到方法調用都採用Builder模式, 最好定義一個對象來表示所有的參數
  • 參數選擇 :

    • 參數類型有限選擇接口來輸入,而非類, 避免拷貝操作
    • 對於boolean值參數, 可以使用兩個元素的枚舉類型

慎用重載

  • 最佳修正方案 :
    • 使用單個方法來替代多個重載的方法, 利用 Class instanceof ?

慎用可變參數

  • 可變參數 : 申明兩個參數, 一個是指定類型的正常參數, 另一個是這種類型的varargs參數

        public static int min(int firstArg, int... remainingArgs) {
            int min = firstArg;
            for (int arg : remainingArgs) {
                if (arg < min) {
                    min = arg;
                }
            }
            return min;
        }
    

返回0長度的數組或者集合,而非null

  • 使用Arrays or Collections , 避免返回null . 會導致NullPointException.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章