一、規(guī)范
1) git 提交規(guī)范
# 提交管理
Type(scope) : # module name # subject
例如:
fix: # 租賃合同 # 修改xxx
Type 必須填寫
* feat: 新功能
* fix:修復bug
* Docs:文檔改變
* Refactor: 某個已有功能重構(gòu)
* Perf: 性能優(yōu)化
* Test: 增加測試
* build:改變build工具
* revert:撤銷上一次commit
* merge:合并代碼
subject:commit 簡單的說明,必須填寫
適當使用git merge / git rebase
2) 代碼規(guī)范
# 1、命名規(guī)范
類名、協(xié)議名、變量名、方法名、常量命令、宏定義命名、通知名
盡量使用 用前綴避免命名空間沖突
# 2、mark 標記類型
#pragma mark - lifeCycle
#pragma mark - public
#pragma mark - request
#pragma mark - delegate
#pragma mark - privates
#pragma mark - lazy
# 3、數(shù)據(jù)源顯示UI
比如自定義cell、view
在需要加載數(shù)據(jù),顯示UI的時候,統(tǒng)一用一個方法傳遞數(shù)據(jù)源,這個方法可以統(tǒng)一用 Protocol 來處理,特殊的單獨處理
- (void)showData:(id)data;
# 4、變量的訪問
對象內(nèi)部盡量直接訪問實例變量,因為速度較快;
編譯器所生成的代碼會直接訪問保存對象實例變量的那塊內(nèi)存
不會調(diào)用“set方法”,繞過了屬性所定義的內(nèi)存管理語義
一般寫入實例變量,通過set 方法
# 5、注釋
供外部使用的,請使用文檔注釋
# 6、多用類型常量,少使用宏定義
宏定義增加編譯時間
沒有類型檢查,編譯通常不會報錯,所以錯誤異常很難定位
# 7、頭文件導入
盡量使用向前聲明的方法 @class xxx
降低耦合、減少編譯時間
盡量在extension 里面 設(shè)置private屬性,在.h文件中,設(shè)置public屬性
# 8、資源圖片
改好英文名字之后才放入到工程里面(不能直接去工程里面改名字,因為圖片的名字沒有改變)
# 9、說明文件
為了提高效率,人員之間的對接,應(yīng)該有一個說明文檔,可以通過網(wǎng)頁查看,記錄相關(guān)的事宜
1、規(guī)范文檔
2、第三方庫的功能類型以及的使用的事例(防止同一個功能,存在很多版本)
3、多搞交流會,提高技術(shù)
注意
- 改動別人模塊的代碼,一定要 模塊負責人 代碼review一下
二、六大原則
中心思想: 高內(nèi)聚 低耦合
1. 單一職責原則
一個類或者一個方法只負責一項職責,盡量做到類的只有一個行為原因引起變化
2. 里氏替換原則
子類可以擴展父類的功能,但不能改變原有父類的功能;
父類出現(xiàn)的地方,子類都可以出現(xiàn),并且將父類對象替換子類對象的時候,程序不會拋出任何異常或錯誤
因此:盡量不要重載或者重寫父類的方法(抽象方法除外),因為這樣會改變父類的原有的行為
3. 依賴倒置原則
面向接口編程,高層模塊不應(yīng)該依賴低層模塊(原子操作的模塊),兩者都應(yīng)該依賴于抽象。
接口(也可以是抽象類)就是一種抽象,只要不修改接口聲明,大家可以放心大膽調(diào)用,至于接口的內(nèi)部實現(xiàn)則無需關(guān)心,可以隨便重構(gòu)。
這里,接口就是抽象,而接口的實現(xiàn)就是細節(jié)
4. 接口隔離
客戶端不應(yīng)該依賴它不需要的接口,一個類對另一個類的依賴應(yīng)該建立在最小的接口上
5. 迪米特原則
最少知道原則,盡量降低類與類之間的耦合;
如果兩個類不必彼此直接通信,那么這兩個類就不應(yīng)當發(fā)生直接的相互作用。
如果其中的一個類需要調(diào)用另一個類的某一個方法的話,可以通過第三者轉(zhuǎn)發(fā)這個調(diào)用。
6. 開閉原則
對擴展開放,對修改關(guān)閉;是指設(shè)計的時候,盡量讓設(shè)計的類做好后就不再修改,如果有新的需求,通過新加類的方式來滿足,而不去修改現(xiàn)有的類(代碼)
注意
- 繼承不要濫用
三、架構(gòu)
1) 業(yè)務(wù)模塊
首頁 、客戶、消息、 我的
細分:
委托、租賃合同、營銷工具、后臺管理、IM、ReactNative、Q聊、實勘、拓房、鑰匙管理、跟進、個人中心、
掃碼登錄
2) 功能模塊
細分:
- 營銷工具【分享、電話、短信】
- 路由:
- 網(wǎng)絡(luò)框架
- 下載功能
- 異常防護
- 埋點
- Js交互、RN與原生交互
- 性能監(jiān)聽
- 播放視頻、瀏覽圖片、語音
- 上傳視頻、圖片
- 工具類:
- Q聊
- 推送
- 二維碼功能
3) base 模塊
公共UI組件類
彈框類組件:alertView、sheetView、toastview、popoverView
分段類組件: segmentView、flitterView、MenuView
搜索框組件:
時間選擇器:
分類:
foundation框架類: NSString、NSDate、NSDictionary、NSArray…
UIKit框架類:UIView、UIButton、UITextField…
4) 架構(gòu)
1. 架構(gòu)圖

架構(gòu)圖.png
2. 私有pod 庫
- 利用pod 私有庫封裝base 層