2019年12月3日 星期二

讀書心得 - Clean Code - Chapter 3 (2)

Chapter 3 - 函式 - 2

使用具描述能力的名稱


    不要害怕名字過長,若取了有性質的函式名稱就較能符合「當每個你看到的函式,執行結果都與你想的差不多代表為 Clean Code」

函式的參數


    函式的參數越少越好,因為參數的存在也會影響著你對函式的預期,所以最理想的情況為 0 參數。
    一個參數
  1. 與這個參數有關的問題  - boolean fileExits("Myfile")
  2. 對這個參數做某種操作,然後回傳 - InputStream fileOpen("Myfile")
  3. 事件,利用參數去修改系統狀態 - passwordAttemptFailedNtimes(int attempts)
    第三種命名要特別小心,要明確的表示出此函式為事件。若參數為 flag 那你要知道此為很爛的作法,flag 就代表 True 要做一件事,False 要做一件事,違反了只做一件事的原則。
    兩 ~ 三個參數
    兩個參數影響函式的預期就更多,所以可以轉成一個參數就好好利用。
    物件型態的參數、參數串列
    利用物件型態或陣列去減少參數個數是不錯的方法
    Circle makeCircle(double x, double y, double radius);
    Circle makeCircle(point center, double radius);

指令和查詢的分離


    如果函式除了做某件事情後,還回傳了某個問題的答案,就等於做兩件事
    public boolean set(String attribute, String value);
    if(set("username", "unclebob"))...
    所以讀者看到此段 if 會容易產生誤解且疑惑,所以要將查詢與指令分開
    if(attributeExists("username")){
        setAttribute("username", "unclebob");
        ...
    }
    利用例外處理取代回傳錯誤碼
    錯誤處理本身就是一件事

Don't Repeat Yourself


   n 個重複的程式碼,代表修改要花 n 倍時間。

上一篇:
讀書心得 - Clean Code - Chapter 3 (1)
下一篇:
讀書心得 - Clean Code - Chapter 4

0 意見:

張貼留言

Popular Posts