22
Clean Code

Clean code_1_Nameing

Embed Size (px)

DESCRIPTION

Clean Code: A Handbook of Agile Software Craftsmanship Author : Robert C. Martin

Citation preview

Page 1: Clean code_1_Nameing

Clean Code

Page 2: Clean code_1_Nameing

Why Clean Code?

•提高效率•減少修改時間•減少 Bug

Page 3: Clean code_1_Nameing

定義

•相依性低•可讀性高•簡單•無重複

Page 4: Clean code_1_Nameing

命名規則

Page 5: Clean code_1_Nameing

命名 = 意圖

int d

- (void)array

int daysSinceCreation

- (void)getFriendArray

Page 6: Clean code_1_Nameing

避免誤導的名字

accountList => accountGroup

- (void)userInfoNameOfString- (void)userObjNameOfString

1 和 l 0 和 O

Page 7: Clean code_1_Nameing

有意義的區別

productInfo 和 productData

NSString *nameString

Page 8: Clean code_1_Nameing

可唸出來的名稱Class DtaRcrd{ private Date genymdhms; private Date modymdhms;}

Class CustomerDateRecord{ private Date generationTimeStamp; private Date modificationTimeStame;}

Page 9: Clean code_1_Nameing

容易被搜尋

int day

int workDaysPerWeek

Page 10: Clean code_1_Nameing

避免編碼

NSInteger IAccountNumber

NSString *strName

匈牙利命名法

Page 11: Clean code_1_Nameing

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; }}

Page 12: Clean code_1_Nameing

Interfaces and Implementations

ICarFactory

ShapeCarFactory

Page 13: Clean code_1_Nameing

避免思維的轉換

for (int c = 0 ; c < 5 ; c++){

}

迴圈的 i, j, k

Page 14: Clean code_1_Nameing

類別和物件

•使用名詞或名詞片語命名

•ex. Customer, account, Address, goodFriends

•類別避免使用 Manager , Processor , Data 或 Info

Page 15: Clean code_1_Nameing

method 用動詞

•-(void)getUserName

•user .getUserName

Page 16: Clean code_1_Nameing

不要裝可愛

•- (void)holyHandGrenade( 神聖手榴彈 )

•- (void)deleteAllItems

Page 17: Clean code_1_Nameing

替概念固定字詞

get / fetch / retrieve

protocolController / deviceManager

Page 18: Clean code_1_Nameing

避免雙關語

- (void)addObject:(id)anObject;

- (void)addObjectFromArray:(NSArray *)array;

- (void)addObject:(id)anObject AtIndex:(NSInteger)index;

Page 19: Clean code_1_Nameing

程式設計師的術語

•ex. JobQueue / jobStack

•除非真的沒有才用專業術語(儘量不要)

•ex. 數學詞𢑥,演算法名稱等等

Page 20: Clean code_1_Nameing

有意義的上下文資訊

NSString *state

NSString *name, *street , *city, *state, *zipcode

NSString *addrState或產生 class Address

Page 21: Clean code_1_Nameing

別加入無意義的上下文資訊

自動補齊資訊過多

難讀且無意義

Page 22: Clean code_1_Nameing

Thank you !