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