Upload
chiachun-liu
View
99
Download
1
Embed Size (px)
DESCRIPTION
Clean Code: A Handbook of Agile Software Craftsmanship Author : Robert C. Martin
Citation preview
Clean Code
Why Clean Code?
•提高效率•減少修改時間•減少 Bug
定義
•相依性低•可讀性高•簡單•無重複
命名規則
命名 = 意圖
int d
- (void)array
int daysSinceCreation
- (void)getFriendArray
避免誤導的名字
accountList => accountGroup
- (void)userInfoNameOfString- (void)userObjNameOfString
1 和 l 0 和 O
有意義的區別
productInfo 和 productData
NSString *nameString
可唸出來的名稱Class DtaRcrd{ private Date genymdhms; private Date modymdhms;}
Class CustomerDateRecord{ private Date generationTimeStamp; private Date modificationTimeStame;}
容易被搜尋
int day
int workDaysPerWeek
避免編碼
NSInteger IAccountNumber
NSString *strName
匈牙利命名法
Class Member{ private String m_name; void setName(String name) { m_name = name; }}
Member Prefixes
Class Member{ private String name; void setName(String name) { self.name = name; }}
Interfaces and Implementations
ICarFactory
ShapeCarFactory
避免思維的轉換
for (int c = 0 ; c < 5 ; c++){
}
迴圈的 i, j, k
類別和物件
•使用名詞或名詞片語命名
•ex. Customer, account, Address, goodFriends
•類別避免使用 Manager , Processor , Data 或 Info
method 用動詞
•-(void)getUserName
•user .getUserName
不要裝可愛
•- (void)holyHandGrenade( 神聖手榴彈 )
•- (void)deleteAllItems
替概念固定字詞
get / fetch / retrieve
protocolController / deviceManager
避免雙關語
- (void)addObject:(id)anObject;
- (void)addObjectFromArray:(NSArray *)array;
- (void)addObject:(id)anObject AtIndex:(NSInteger)index;
程式設計師的術語
•ex. JobQueue / jobStack
•除非真的沒有才用專業術語(儘量不要)
•ex. 數學詞𢑥,演算法名稱等等
有意義的上下文資訊
NSString *state
NSString *name, *street , *city, *state, *zipcode
NSString *addrState或產生 class Address
別加入無意義的上下文資訊
自動補齊資訊過多
難讀且無意義
Thank you !