命名規(guī)范
文件命名
原則:采取駝峰命名規(guī)則,即首字母必須大寫,如果為詞組,則每個單詞的首字母必須大寫,類名只能使用名詞或名詞詞組。
- 所有類名以
MG(米果的縮寫)開頭; - 根據(jù)功能模塊,類添加功能模塊前綴,如個人中心模塊,類加MGUC前綴;
- 繼承自
UIView,UITableViewCell,UIButton等以View,Cell,Button結(jié)尾; - 繼承自
ViewController的類以Controller結(jié)尾; - 繼承自
TableViewController的類以TableController結(jié)尾; - protocol定義時,前綴以
MG開頭,后綴以Delegate結(jié)尾; - Category命名,類名+標(biāo)識+擴(kuò)展,如
UIImageView +HP+Web,命名為UIImageView+HPWeb; - 數(shù)據(jù)模型以Model結(jié)尾;
變量和對象命名
原則:變量名使用小駝峰法, 使變量名盡量可以推測其用途屬性具有描述性,每個屬性命名都加上類型后綴。
- 類成員變量名,遵守小駝峰法命名并前綴下劃線
_。如UIButton *_submitButton; - 局部變量名,遵守小駝峰命名規(guī)則。如
UIButton *submitButton; - 通知相關(guān)變量名,添加
Notification為后綴; - 控件類型變量,命名需添加相應(yīng)類型結(jié)尾;
- 變量名需有特定的意義,建議修飾+類型
- const常量,以小寫k開頭,后面單詞首字母大寫,其余小寫。如:
const float kMaxHeigt = 100.0f;
枚舉命名
原則:遵循大駝峰命名法,如:
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
};
方法命名
原則:遵守小駝峰原則,首字母小寫,其他單詞首字母大寫,每個空格分割的名稱以動詞開頭。
A 代理方法
- 以發(fā)送代理的對象類名作為代理方法名的開始(去掉類名的前綴,并且小寫開頭)
B 實例方法
- 執(zhí)行性的方法應(yīng)該以動詞開頭,小寫字母開頭;
- 返回性方法,若返回值為單個值,在頭部加上單詞
get; - 返回性的方法應(yīng)該以返回的內(nèi)容開頭,但之前不要加get;
資源命名
原則:“模塊+功能”命名法
- 可使用公認(rèn)無歧義的縮寫,如:
background對應(yīng)bg,viewcontroller對應(yīng)vc,button對應(yīng)btn,navgation對應(yīng)nav; - 模塊分為公共模塊、私有模塊:公共模塊主要包括統(tǒng)一的背景,導(dǎo)航條,標(biāo)簽,公共的按鈕背景,公共的默認(rèn)圖等等;私有模塊主要根據(jù)app的業(yè)務(wù)功能模塊劃分,比如用戶中心,消息中心等。
- 如用戶中心用戶頭像圖片的命名可以為:uc_imageview_user_icon
編碼規(guī)范
原則:可復(fù)用, 易維護(hù), 可擴(kuò)展.
注釋
- 變量注釋應(yīng)詳細(xì)描述變量用處(文檔注釋)
- 枚舉注釋應(yīng)詳細(xì)描述枚舉和每一個元素用處(文檔注釋)
- 方法注釋應(yīng)詳細(xì)描述方法作用、參數(shù)意義、返回值意義(文檔注釋)
- 其他使用單行注釋
資源文件
- 資源文件全部放入
Supporting Files文件夾下 - app支持iOS8及以上,圖片資源放入
Assert.xcassets,可根據(jù)功能模塊分類或資源分類建立自己的Folder - app支持iOS7及以上,圖片資源放入
Resources文件夾,各個資源按照功能模塊或資源分類放在相應(yīng)的文件夾內(nèi)
設(shè)計模式
原則:項目分層:http://o9zrwgllm.bkt.clouddn.com/%E6%9E%B6%E6%9E%84%E7%A4%BA%E6%84%8F%E5%9B%BE.png
- 單個模塊使用MVC,或MVVM
- 對于可重復(fù)使用的模塊,應(yīng)抽離為單獨工具模塊,留好清晰的入口及出口
- 建立領(lǐng)域(業(yè)務(wù))模型,解耦圖形界面,數(shù)據(jù)存儲和業(yè)務(wù)邏輯
- 抽離較獨立的功能,抽離對應(yīng)的service
單元測試
原則:使用Apple自帶的XCTest框架進(jìn)行單元測試
- 對于接口和可進(jìn)行模塊化測試的部分,應(yīng)編寫對應(yīng)的單元測試,測試包含邊界條件測試,非法條件測試,性能測試等
第三方庫管理
- 對于引入的第三方庫,統(tǒng)一使用cocoapods進(jìn)行管理
- 若第三方庫需要修改調(diào)用效果,盡可能使用Category或子類重寫調(diào)用效果
版本管理
- 使用git進(jìn)行版本管理
- 提交log,最好清晰表述相關(guān)的功能修改,若修改bug,最好加上bug編號
- 發(fā)布的大版本,打tag標(biāo)示對應(yīng)的版本,tag名稱規(guī)則為
正式版版本_日期,如5_5_20160715
注意:
- 注意變量的強(qiáng)弱引用
- 注意block等循環(huán)引用問題
- 注意解耦UI,數(shù)據(jù),業(yè)務(wù)邏輯
- 注意各種費時操作盡可能不阻塞主線程