命名規(guī)范
代碼中的命名嚴(yán)禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。正確的英文拼寫和語法可以讓閱讀者易于理解,避免歧義柿冲。
大駝峰規(guī)則:每個(gè)單詞的首字母大寫渗柿。例:NameTextField。
小駝峰原則:第一個(gè)單詞首字母小寫矾芙,其余都大寫舍沙。例:nameTextField
文件夾命名
創(chuàng)建文件夾最好創(chuàng)建實(shí)體文件夾,找到工程目錄剔宪,創(chuàng)建相應(yīng)文件夾并拖入工程拂铡。文件夾命名使用相應(yīng)模塊結(jié)構(gòu)分層的英文,Contorller葱绒、Model感帅、View、ViewModel地淀、Service
版本規(guī)范
采用A.B.C 三位數(shù)字命名失球,比如:1.0.2,當(dāng)有屬于重大更新內(nèi)容增加A(1.0.2 -> 2.00)骚秦,小部分更新內(nèi)容增加B(1.0.2 -> 1.1.0)她倘,補(bǔ)丁更新內(nèi)容增加(1.0.2 -> 1.0.3)
第三方庫規(guī)范
對(duì)開源庫的選取,一般都需要選擇比較穩(wěn)定的版本作箍,作者在維護(hù)的項(xiàng)目硬梁,要考慮作者對(duì)issue的解決,以及開發(fā)者的知名度等各方面胞得。選取之后荧止,一定的封裝是必要的。項(xiàng)目使用cocoapods統(tǒng)一管理開源第三庫文件阶剑,不需要手動(dòng)導(dǎo)入和手動(dòng)添加依賴庫跃巡。如果第三方不支持cocoapods,可手動(dòng)導(dǎo)入工程牧愁。
項(xiàng)目命名
項(xiàng)目名都遵循大駝峰命名素邪。例如:WeChat。
Bundle Identifier 命名
Bundle Identifier:采用反域名命名規(guī)范猪半,全部采用小寫字母兔朦,以域名后綴+公司頂級(jí)域名+應(yīng)用名形式命名偷线,例如:com.wecat.tencent
類名
類的命名都遵循大駝峰命名。一般是:前綴 + 功能 + 類型沽甥。例如:WX + Login + ViewController 由于文件命名太長會(huì)影影響的左側(cè)菜單文件名顯示所以建議使用VC代替ViewController声邦,VM代替ViewModel但是view、model依然建議使用全稱
具體實(shí)例:
WXLoginVC 摆舟、WXLoginView亥曹、WXLoginModel、WXLoginVM恨诱、WXLoginCell
封裝的基礎(chǔ)組件等參照:
WXBaseButton媳瞪、WXBaseLabel、WXBaseView胡野、WXBaseTextField材失、WXBaseTextView
封裝的功能view、工具類硫豆、代理等參照:
WXToastView 龙巨、WXTool、WXLoginTool熊响、WXLoginDelegate旨别、WXLoginManager、WXLoginService汗茄、WXUIButton+login
常量
宏:小寫k+大駝峰 即為:#define kUserAgeKey @“ageKey”
全局常量:工程前+綴全大寫秸弛,下劃線隔開 即為:extern const NSString MW_USER_AGE_KEY
參數(shù)名
參數(shù)名以小駝峰命名,盡量參考蘋果原生方法風(fēng)格編寫洪碳。盡量可讀性好递览,看到方法名就知道這個(gè)方法是用來干什么的。參數(shù)應(yīng)該避免用單個(gè)字符命名瞳腌。
例:- (void)setDataImageUrl:(NSString *)imageUrl name:(NSString *)nameStr content:(NSString *)contentStr
資源文件命名
全部小寫绞铃,采用下劃線命名法,加前綴區(qū)分嫂侍。所有的資源文件都需要加上儿捧。
命名模式:可加后綴small表示小圖,big表示大圖,邏輯名稱可由多個(gè)單詞加下劃線組成挑宠,采用以下規(guī)則:
模塊名用途邏輯名稱菲盾、模塊名用途顏色、用途邏輯名稱各淀、模塊名用途_顏色
login_bg_image_normal
變量和方法
變量和方法的命名都遵循小駝峰命名懒鉴。例如:name, isOpen,loginModel,- (void)clickAction響應(yīng)事件。
常用方法命名
例如:
-(void)initView 初始化碎浇、創(chuàng)建临谱、布局當(dāng)前頁面的UI控件
-(void)updateUI 加載 更新 布局
-(void)loadData 加載數(shù)據(jù)
-(void)loadMoreData 加載數(shù)據(jù) 一般用于帶分頁的請(qǐng)求
-(void)updateWithData:(id)data 一般用于根據(jù)數(shù)據(jù)傳值(model)更新UI
注釋規(guī)范
方法注釋:方法外部統(tǒng)一用option + command + /咆畏,方法內(nèi)部統(tǒng)一用//注釋。如果該方法在.h文件有聲明吴裤,那么建議把注釋寫在.h
/**
吃東西的方法
@param food 是的食物
*/
- (void)eatFood:(NSString *)food
模型注釋:每個(gè)model中的,包含的每個(gè)屬性溺健,都必須要寫上相對(duì)應(yīng)的注釋麦牺,用///注釋。閱讀者一看這個(gè)model鞭缭,就清楚知道m(xù)odel中的每個(gè)字段代表的意思剖膳,用來做什么事情的。
@interface WXUserModel : NSObject
/// 用戶名
@property (nonatomic, copy) NSString *name;
/// 密碼
@property (nonatomic, copy) NSString *password;
@end
編碼規(guī)范
- 所有的方法之間空一行
- 代碼之間不允許無故出現(xiàn)大段的空行
- 所有不易直接看懂的自定義的方法需要給出注釋岭辣。
- 代碼后的“{”需要獨(dú)占一行吱晒,包括方法之后,if沦童,switch等仑濒。
- 屬性的定義請(qǐng)按照上面面例子property之后,空一格偷遗,括號(hào)之后空一格墩瞳,寫上類名,空一格之后跟上*和屬性名氏豌。
- 刪除不用的代碼喉酌,如果有方法一直不會(huì)用到,請(qǐng)刪除(工具類另做考慮)泵喘。
- 比較大的代碼塊需要給出注釋泪电。
- 沒有執(zhí)行任何業(yè)務(wù)邏輯的方法,請(qǐng)刪除或給予注釋纪铺,刪除多余的資源或文件
- 提取方法相速,去除重復(fù)代碼。對(duì)于必要的工具類抽取霹陡。
- 盡可能的使用局部變量
- 盡量減少對(duì)變量的重復(fù)計(jì)算和蚪。
- 檢測(cè)內(nèi)存泄漏∨朊蓿可使用Instruments分析內(nèi)存攒霹。