最近公司在做SDK,這里總結(jié)下SDK開發(fā)規(guī)范
開發(fā)規(guī)范
- API功能單一,減少類似enum的入?yún)⒃O計
- 線程處理, 如非必要不要使用應用主線程,不能長時間占用,SDK內(nèi)應有一個專門線程處理SDK 相關操作
- 盡量減少全局回調(diào)
- 提供異常情況回調(diào)和輸出方便接入放定位,錯誤回調(diào)采用code+msg組合
- 能不用單例的就盡量少的使用
- 對iOS 來說能不用xib 就不用,能不用通知就不用通知
命名規(guī)范
- 接口名稱,參數(shù)命名清晰規(guī)范,參數(shù)盡可能少,所有傳入?yún)?shù)要做好校驗,禁止使用拼音和中文
- 類名前綴和包命名縮寫要一致
- 函數(shù)命名遵循共性,不要出現(xiàn)歧義或者違背大家的共識
- 所有資源命名前綴:mEft_xxx_ 工程命名:eft-sdk-xxx-android or eft-sdk-xxx-ios
- demo 項目命名:demo,包名:cn.eft.sdk.xxx.demo sdk
- 項目命名:mEftXxxSDK,包名:cn.etf.sdk.xxx
注釋規(guī)范
- 代碼注釋規(guī)范清楚
- 接口注釋要完善
- 注釋形式統(tǒng)一
- 注釋內(nèi)容準確簡潔
日志設計
- 核心處理log日志可以配置
- 可控制打印log級別
- 主流程,異常日志存儲方便定位問題
第三方庫依賴處理原則
- 能用系統(tǒng)的API解決的,就不要使用第三方,減少對其他庫的依賴;
- 最小可用性原則,即用最少的代碼,如無必要勿增實體;
- 最少依賴性原則,即用最低限度的外部依賴,如無必要勿增依賴
- SDK開發(fā)中,需要盡量避免依賴第三方庫以免引起不必要的沖突
- 如果確實因為項目需要,要引入一些開源庫,可以通過源碼集成的形式引入,再更改一下包名(類名),避免集成沖突。
版本管理規(guī)范
- 使用三位版本號,每位版本號最高三位數(shù)字如:1.0.12
- 版本號遞增原則:
- 第三位:bug修復,極小的變更
- 第二位:一般的功能迭代
- 第一位:項目重構(gòu),功能變更較大,需團隊共同確定
打包原則
- 對外提供的包不能包含任何編譯生成的文件和目錄,如安卓的build目錄 iOS XcodeData
- 使用腳本一鍵打包,提升打包效率,降低手動打包帶來的出錯率
- 打包腳本需與項目其他腳本分離,盡量職責單一, 包中盡量提供示例工程, 示例工程必須讓開發(fā)者以最低的成本運行起來
- 打包完成的SDK,集成到示例工程,要進過QA測試才能放給用戶
通用規(guī)范 (注意事項)
- 接口隔離 (小而 精簡)
- 接口易用性 (對外接口易用,易懂)
- 向后兼容 (升級SDK兼容)
- 配套有完整且詳細的使用說明文檔和版本更新說明
- AppId 和 AppKey的分配,用于區(qū)分集成sdk的是哪一個公司,做好權(quán)限控制
- SDK的 sdkVersion要盡量小,最好不要超過使用SDK的項目的Version(支持的系統(tǒng))
- 盡量不要引用第三方庫,要盡量使用系統(tǒng)自帶的功能,然后在其基礎上進行封裝。
- SDK需要有較強的容錯性,增減穩(wěn)定,增大力度對于SDK內(nèi)部異常進行捕獲。
- SDK內(nèi)部對于關鍵路徑要有詳細的Log記錄,便于后期排查問題。
- 各個庫之間要做到高內(nèi)聚,低耦合
- 核心代碼的安全性