# Clean Code - Ch03 函式 ## 1. 簡短 funtion不應該大到包含巢狀結構,應該只做一件事,而且只把這件事情做好 ## 2. 如果function內容就是使用Switch的情況,可以改成用Factory取代 ``` csharp switch (param) { case "example1": result = new Calc(); break; } switch (param) { case "example1": result = this.Calc(); break; } ``` ## 3. 取名要貼近實際的功能,不要太發散或不相關 ## 4. function不要在參數帶bool去決定工作內容,應該要把它分成2個function ## 5. function盡量不要帶太多參數,這樣會造成閱讀時需要關注更多的部份以及使得function變得更肥 ## 6. function應該要沒有副作用 假設function叫做CheckUserExist,那它裡面應該就要只有判斷式,而不該有其他動作,ex.改變數據、取得數據等等,因為這樣容易使得數據變得不可信賴 ## 7. 應該盡量避免讓function有response,因為這樣會需要去看function才能確定到底是丟了什麼東西回來,他自己去改變自己的狀態比較好 ``` csharp EmailContent = this.appendString(params) vs EmailContent.AppendString(params) ``` > 但我覺得這要看程式的架構怎麼訂,不是每個都適用 ## 8. 用exception取代response error message 這樣做不但可以把不同的邏輯抽離出來也可以讓code變得簡潔 ``` csharp if (doSomething1() == true) { if(doSomething2() == true) { Exec(); } else { LogError(); } } else { LogError(); } ↓ try { doSomething1(); doSomething2(); Exec(); } catch { LogError(); } ``` ## 9. try/catch 應該跟程式邏輯分開,不該混和在一起 ``` csharp try { Exec() } catch (Exception ex) { LogError() } ``` ## 10. DRY原則 - Dont Repeat Yourself 不要重複自己 [DRY - Don't Repeat Yourself](https://zh.wikipedia.org/wiki/%E4%B8%80%E6%AC%A1%E4%B8%94%E4%BB%85%E4%B8%80%E6%AC%A1) ###### tags: `Clean Code` `Book`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up