[TOC]
最近在公司內(nèi)部寫(xiě)了一些 Swift 相關(guān)組件的一些思考
Swift 組件開(kāi)發(fā)規(guī)范
1. 工程規(guī)范
1.1 組件工程創(chuàng)建
利用 pod 自帶命令 pod lib create 構(gòu)建工程(使用詳情請(qǐng)見(jiàn) <a href="#podLib">附錄</a>)
Swift 語(yǔ)言組件開(kāi)發(fā)有別于 OC 版本的開(kāi)發(fā), 引入了 Module 概念,尤其對(duì)訪問(wèn)權(quán)限關(guān)鍵字的使用:
open > public > internal > filePrivate > private
使用自帶命令創(chuàng)建工程,在代碼測(cè)試時(shí),避免一些訪問(wèn)權(quán)限不正當(dāng)使用,提前暴露使用問(wèn)題。 比如:function 函數(shù)使用 internal 權(quán)限,但是生成 framewoek 后卻無(wú)法訪問(wèn)等
1.2 庫(kù)的導(dǎo)入
默認(rèn)情況下,用到哪個(gè)庫(kù)就要導(dǎo)入哪個(gè)庫(kù),無(wú)疑增加了很多重復(fù)的工作量,過(guò)去 OC 組件工程以 pch 文件 實(shí)現(xiàn)全局導(dǎo)入,Swift 引入了 Module 概念,無(wú)法在使用 pch。
解決方案
- 構(gòu)建 工程名-Bridging-Header.h 文件
- 引入 framewok,比如 Swift版網(wǎng)絡(luò)框架Bowling,通過(guò) #import<Bowling/Bowling-Swift.h>
其中 Bowling 為包名,Bowling-Swift.h 為 framwwork 自動(dòng)生成的,位于 Bowling.framework/Header 文件下
1.3 單元測(cè)試
1.3.1 必要性
測(cè)試即使用文檔
對(duì)于組件使用人員來(lái)看,可以通過(guò)閱讀單元測(cè)試來(lái)了解功能的使用,方便查看
提高生產(chǎn)效率
提前發(fā)現(xiàn) bug,快速為 dev 提供反饋的機(jī)制; 尤其 一處小小的改動(dòng),快速驗(yàn)證
改善代碼結(jié)構(gòu)設(shè)計(jì)
單元測(cè)試可以充當(dāng)一個(gè)設(shè)計(jì)工具,它有助于開(kāi)發(fā)人員去思考代碼結(jié)構(gòu)的設(shè)計(jì),讓代碼更加有利于測(cè)試
1.3.2 使用
系統(tǒng)自帶的 XCTestCase 框架 【Unit Testing】
第三方框架 Quick
1.4 思維演化
1.設(shè)計(jì)先行:分析 -> 調(diào)研 -> 設(shè)計(jì) -> 架構(gòu) -> 拆分實(shí)現(xiàn)
2.編程范式跨越:面向?qū)ο缶幊? -> 面向協(xié)議(接口)編程
2. 編碼規(guī)范
2.1 類名命名規(guī)范
由于 Swift 引入了 Modul 概念,在類名前不必添加 前綴,僅限于 Swift 之間調(diào)用,如果有類名,方法名等沖突可以采用 Modul. 形式訪問(wèn)。OC 調(diào)用 Swift 時(shí), Swift 可以通過(guò) @objc() 修改暴露給 OC 的符號(hào)名
2.2 對(duì)外訪問(wèn)權(quán)限
正確使用 open > public > internal > filePrivate > private
2.3 注釋
注釋標(biāo)識(shí):option + cmd + /
注釋查看:option + 左鍵
2.4 盡量使用 Swift 原生對(duì)象
3. 文檔規(guī)范
3.1 文檔目錄結(jié)構(gòu)
- 簡(jiǎn)介
【 1.1 描述,1.2 特性 】 - 快速引入
【 2.1 系統(tǒng)要求 2.2 安裝(至少包括 CocoaPods 安裝)】 - 使用方式
【3.1 基本使用 3.2 高級(jí)特性 ....】
致謝(可選,比如 參考哪些框架 或者 移植了哪些代碼等)
3.2 書(shū)寫(xiě)規(guī)范
- 標(biāo)題:數(shù)字標(biāo)號(hào) +.(點(diǎn)) + (空格) + 標(biāo)題內(nèi)容,如:2. 快速引入
附錄
1. <span id="podLib">pod lib 命令詳細(xì)使用</span>
比如 :我們以創(chuàng)建 TestPro 組件為例, 打開(kāi)終端,cd 到指定目錄,執(zhí)行命令 pod lib create TestPro
等待 TestPro template 配置
//自動(dòng)執(zhí)行
Cloning `https://github.com/CocoaPods/pod-template.git` into `TestPro`.
Configuring TestPro template.
What platform do you want to use?? [ iOS / macOS ]
iOS
What language do you want to use?? [ Swift / ObjC ]
Swift
Would you like to include a demo application with your library? [ Yes / No ]
Yes
如果開(kāi)發(fā)功能模板選擇 Quick
Which testing frameworks will you use? [ Quick / None ]
Quick
如果開(kāi)發(fā) UI組件 選擇 Yes
Would you like to do view based testing? [ Yes / No ]
Yes
最終生成工程目錄如下:
