我的個(gè)人代碼規(guī)范文檔
因?yàn)楹芏嗳瞬贿m應(yīng)我的代碼規(guī)范 所以只僅供參考。不知道從哪里說起,就想到那里說到那里。
1 .屬性的聲明
屬性可以用到下面的幾個(gè)單詞進(jìn)行聲明,只針對(duì)ARC開發(fā)環(huán)境
Strong
Copy
Assgin
Weak
我說一下上面幾個(gè)單詞用到的地方,在除去NSString Block之外所有的對(duì)象應(yīng)該聲明為Strong
我現(xiàn)在的團(tuán)隊(duì)習(xí)慣聲明為Weak 創(chuàng)建局部對(duì)象AddSubView之后 之后指向,這是錯(cuò)誤的。因?yàn)槟愕闹羔樦皇潜籄ddSubView保留,如果什么時(shí)候Remove 你的屬性就為nil.
在NSString和Block聲明地方使用Copy屬性。有的人NSString使用Strong,我們都知道Strong和Copy分別是指向一個(gè)對(duì)象和從新生成一個(gè)對(duì)象,可以根據(jù)實(shí)際情況來聲明,一般要使用Copy。
對(duì)于基本的數(shù)據(jù)類型一定要使用Assgin
對(duì)于XIB的屬性使用Weak 代理,還有一些弱引用對(duì)象。
2.盡量多使用屬性懶加載
可以在實(shí)現(xiàn)的文件里面把屬性的懶加載也就是get方法卸載頁面的最下面,這樣我們就只關(guān)注于上面的內(nèi)容了。
3 允許修改的對(duì)象屬性盡量使用readlony
對(duì)于一些控件我們只需要用戶修改控件的屬性,就可以在頭文件聲明readonly 實(shí)現(xiàn)文件再次聲明。
4 文件夾的分層
我也喜歡進(jìn)行Cocoapods托管,但是一些第三方庫還是不支持。
Defines(存放定義的顏色 枚舉 工程配置 字符串等等。記得這些配置我習(xí)慣分文件存放)
FrameWork(存放第三方的FW 和系統(tǒng)的)
Libs(第三方開源代碼的庫)
Plugins(對(duì)于我來說俗稱插件話 管理各個(gè)功能塊的插件 比如支付插件 管理各種支付)
Categories(存放自定義的各個(gè)分類)
Protocols(存放自定義個(gè)協(xié)議類)
Tools(項(xiàng)目用到的協(xié)議工具 比如匯率轉(zhuǎn)換等等)
Requests(基于自己工程封裝的請(qǐng)求庫 只針對(duì)自己工程)
Controller (試圖)
? Controller(試圖控制器)
? View (分離的試圖)
? Models(數(shù)據(jù)模型)
? ViewModels(用于數(shù)據(jù)解析)
? Api(用于請(qǐng)求)
AppDelegate(存放AppDelegate文件)
Resouses(存在Plist 圖片等等)
5 可以采用MVVM 的變種
自從我開始用MVVM 我就覺得和我之前的一種很像
ViewController的View可以單獨(dú)提出來 VC只負(fù)責(zé)Push的跳轉(zhuǎn) 發(fā)起請(qǐng)求
View 負(fù)責(zé)VC的全部的試圖 可以分離很多塊
Model用于和后臺(tái)接口數(shù)據(jù)模型的解析
ViewModel負(fù)責(zé)請(qǐng)求數(shù)據(jù)和解析數(shù)據(jù)
API負(fù)責(zé)整個(gè)VC的接口
6 命名方面
很多文檔都有 我就只說幾點(diǎn)
命名一定要體現(xiàn)這個(gè)是干什么的 比我headImageView,我可以猜出來是頭像 而且是UIImageView控件
全局屬性使用_開頭和屬性的最好保持一致。