SlideShare a Scribd company logo
1 of 22
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 !

More Related Content

Similar to Clean code_1_Nameing

Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
lydiafly
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
isnull
 
NeteaseBlog Objective-C Style Guide
NeteaseBlog Objective-C Style GuideNeteaseBlog Objective-C Style Guide
NeteaseBlog Objective-C Style Guide
jenkinv
 
第8章结构体与共用体
第8章结构体与共用体第8章结构体与共用体
第8章结构体与共用体
summerfeng
 
希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范
Hongjian Wang
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
yiditushe
 
重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)
Chris Huang
 
Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料
yiditushe
 

Similar to Clean code_1_Nameing (20)

02 Objective-C
02 Objective-C02 Objective-C
02 Objective-C
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introduction
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanup
 
xwz 2010-10-31
xwz 2010-10-31xwz 2010-10-31
xwz 2010-10-31
 
NeteaseBlog Objective-C Style Guide
NeteaseBlog Objective-C Style GuideNeteaseBlog Objective-C Style Guide
NeteaseBlog Objective-C Style Guide
 
twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹
 
C++模板与泛型编程
C++模板与泛型编程C++模板与泛型编程
C++模板与泛型编程
 
第8章结构体与共用体
第8章结构体与共用体第8章结构体与共用体
第8章结构体与共用体
 
Ch10
Ch10Ch10
Ch10
 
希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范
 
关系数据库应用设计基础
关系数据库应用设计基础关系数据库应用设计基础
关系数据库应用设计基础
 
模块一-Go语言特性.pdf
模块一-Go语言特性.pdf模块一-Go语言特性.pdf
模块一-Go语言特性.pdf
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
 
Sql培训 (1)
Sql培训 (1)Sql培训 (1)
Sql培训 (1)
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)重構—改善既有程式的設計(chapter 7)
重構—改善既有程式的設計(chapter 7)
 
Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料Oracle公司内部数据库培训资料
Oracle公司内部数据库培训资料
 
Glider
GliderGlider
Glider
 

Clean code_1_Nameing