iOS編程規(guī)范

命名規(guī)范


文件命名

原則:采取駝峰命名規(guī)則,即首字母必須大寫,如果為詞組,則每個單詞的首字母必須大寫,類名只能使用名詞或名詞詞組。

  • 所有類名以MG(米果的縮寫)開頭;
  • 根據(jù)功能模塊,類添加功能模塊前綴,如個人中心模塊,類加MGUC前綴;
  • 繼承自UIViewUITableViewCell,UIButton等以ViewCell,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ù)邏輯
  • 注意各種費時操作盡可能不阻塞主線程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS編程規(guī)范0規(guī)范 0.1前言 為??高產(chǎn)品代碼質(zhì)量,指導(dǎo)廣大軟件開發(fā)人員編寫出簡潔、可維護(hù)、可靠、可 測試、高效...
    iOS行者閱讀 4,613評論 21 35
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 文章來自https://github.com/Blankj/AndroidStandardDevelop#安卓開發(fā)...
    小莊bb閱讀 896評論 0 1
  • 1.【從本篇中學(xué)到的重要概念】 how to make the most of your innate abil...
    17數(shù)440陳柳詩閱讀 579評論 9 6

友情鏈接更多精彩內(nèi)容