- 反覆思考名稱,自問別人會怎麼解釋這個名稱
- 對於邊界的極值而言,最清楚的方式是在名稱前面加上max_或min_
- 選擇boolean變數或回傳booleab值的函數名稱時,必須確保能清楚表示true / false的意義
- 一般來說,加上is / has / can / should 可以讓boolean value更加明確
- 避免在名稱中使用否定描述,如disableSSL,改用useSSL會比較容易閱讀且簡短
- 最好的名稱是最不容易被誤用的名稱,閱讀程式碼的人能夠清楚了解撰寫程式的人的意圖。不幸的是,許多英文單字在程式碼都會有兩種以上的解釋,如filter、length以及limit
- 在決定名稱前,要從反向思考,想像可能造成的誤解,最好的名稱能夠盡量避免誤會
- 對於定義數值的上下限,max與min是很有幫助的prefix;對於閉區間,first與last也是十分合適的prefix;對於半開放區間,begin與end是符合使用慣例的好選擇
- 注意使用者對特定單字的預期,如使用者會認為get與size是lightweight accessor
Example
1. 對於邊界的極值而言,最清楚的方式是在名稱前面加上max_或min_。以切字串為例,即長度第15個字以後以...表示,如"撰寫程式時,應該將讀者理解所需的時間降到最短"此段字串要回傳"撰寫程式時,應該將讀者理解所需..."
如在main method裡面分別呼叫clip與truncate兩個methods
1 2 3 | String str = "撰寫程式時,應該將讀者理解所需的時間降到最短"; test.clip(str, 15); test.truncate(str, 15); |
以下是clip method的第二個parameter的命名
1 2 3 | public String clip(String text, int length) { return text.substring(0, length).concat("..."); } |
以下是truncate method的命名,改成用maxLength,相較於前者,較為明確、清楚
1 2 3 4 | // 改成maxLength,會更加清楚明瞭 public String truncate(String text, int maxLength) { return text.substring(0, maxLength).concat("..."); } |
2. 加上is / has / can / should 可以讓boolean value更加明確
1 2 3 4 5 | public Boolean authenticate(User user) { // do authentication, if failed Boolean checkPassword = Boolean.FALSE; return checkPassword; } |
若將checkPassword改成如下,意義會更加直覺
1 2 3 4 5 | public Boolean authenticate(User user) { // do authentication, if failed Boolean userIsAuthnticated = Boolean.FALSE; return userIsAuthnticated; } |
No comments:
Post a Comment