iOS 開發(fā)規(guī)范

命名規(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)存攒霹。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市浆洗,隨后出現(xiàn)的幾起案子催束,更是在濱河造成了極大的恐慌,老刑警劉巖伏社,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抠刺,死亡現(xiàn)場離奇詭異塔淤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)速妖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門高蜂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人罕容,你說我怎么就攤上這事备恤。” “怎么了锦秒?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵露泊,是天一觀的道長。 經(jīng)常有香客問我旅择,道長惭笑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任生真,我火速辦了婚禮沉噩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汇歹。我一直安慰自己屁擅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布产弹。 她就那樣靜靜地躺著派歌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痰哨。 梳的紋絲不亂的頭發(fā)上胶果,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音斤斧,去河邊找鬼早抠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛撬讽,可吹牛的內(nèi)容都是我干的蕊连。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼游昼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼甘苍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起烘豌,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤载庭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囚聚,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡靖榕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顽铸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茁计。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谓松,靈堂內(nèi)的尸體忽然破棺而出簸淀,到底是詐尸還是另有隱情,我是刑警寧澤毒返,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站舷手,受9級(jí)特大地震影響拧簸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜男窟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一盆赤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歉眷,春花似錦牺六、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扇住,卻和暖如春春缕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艘蹋。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國打工锄贼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人女阀。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓宅荤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浸策。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冯键,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 前言 說是前言,其實(shí)也是本文誕生的目的的榛。隨著公司業(yè)務(wù)的不斷增加琼了,功能的快速迭代,app的業(yè)務(wù)線越來越多,代碼體積變...
    夢(mèng)翔_d674閱讀 1,491評(píng)論 0 2
  • 前言說是前言雕薪,其實(shí)也是本文誕生的目的昧诱。隨著公司業(yè)務(wù)的不斷增加,功能的快速迭代所袁,app的業(yè)務(wù)線越來越多盏档,代碼體積變得...
    Mr_yinwei閱讀 641評(píng)論 0 0
  • 前言 本文是本寶寶參考自己的部分代碼規(guī)范和網(wǎng)上眾多其它小伙伴的代碼規(guī)范,整理和寫出的燥爷。規(guī)范涵蓋了很多內(nèi)容蜈亩,閱讀的小...
    肆意二貨閱讀 16,506評(píng)論 23 71
  • 導(dǎo)語: 為規(guī)范部門 iOS開發(fā),特制定本文檔前翎,供各位同仁參考稚配。 語言 使用US英語, 不要使用拼音港华。e.g:UIC...
    攻城獅V閱讀 764評(píng)論 0 0
  • iOS代碼編寫規(guī)范Git的使用iOS進(jìn)階開發(fā) 目的 了利于項(xiàng)目維護(hù)以及規(guī)范開發(fā)道川,促進(jìn)成員之間Code Review...
    CharlyZheng閱讀 572評(píng)論 0 1