Clean code_1_Nameing

Preview:

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 !