Swift 組件開發(fā)規(guī)范

[TOC]

最近在公司內(nèi)部寫了一些 Swift 相關(guān)組件的一些思考

Swift 組件開發(fā)規(guī)范

1. 工程規(guī)范

1.1 組件工程創(chuàng)建

利用 pod 自帶命令 pod lib create 構(gòu)建工程(使用詳情請見 <a href="#podLib">附錄</a>)

Swift 語言組件開發(fā)有別于 OC 版本的開發(fā), 引入了 Module 概念,尤其對訪問權(quán)限關(guān)鍵字的使用:
open > public > internal > filePrivate > private

使用自帶命令創(chuàng)建工程,在代碼測試時,避免一些訪問權(quán)限不正當使用,提前暴露使用問題。 比如:function 函數(shù)使用 internal 權(quán)限,但是生成 framewoek 后卻無法訪問等

1.2 庫的導(dǎo)入

默認情況下,用到哪個庫就要導(dǎo)入哪個庫,無疑增加了很多重復(fù)的工作量,過去 OC 組件工程以 pch 文件 實現(xiàn)全局導(dǎo)入,Swift 引入了 Module 概念,無法在使用 pch。

解決方案

  1. 構(gòu)建 工程名-Bridging-Header.h 文件
  2. 引入 framewok,比如 Swift版網(wǎng)絡(luò)框架Bowling,通過 #import<Bowling/Bowling-Swift.h>

其中 Bowling 為包名,Bowling-Swift.h 為 framwwork 自動生成的,位于 Bowling.framework/Header 文件下

1.3 單元測試

1.3.1 必要性

測試即使用文檔

對于組件使用人員來看,可以通過閱讀單元測試來了解功能的使用,方便查看

提高生產(chǎn)效率

提前發(fā)現(xiàn) bug,快速為 dev 提供反饋的機制; 尤其 一處小小的改動,快速驗證

改善代碼結(jié)構(gòu)設(shè)計

單元測試可以充當一個設(shè)計工具,它有助于開發(fā)人員去思考代碼結(jié)構(gòu)的設(shè)計,讓代碼更加有利于測試

1.3.2 使用

系統(tǒng)自帶的 XCTestCase 框架 【Unit Testing】

第三方框架 Quick

1.4 思維演化

1.設(shè)計先行:分析 -> 調(diào)研 -> 設(shè)計 -> 架構(gòu) -> 拆分實現(xiàn)

2.編程范式跨越:面向?qū)ο缶幊? -> 面向協(xié)議(接口)編程

2. 編碼規(guī)范

2.1 類名命名規(guī)范

由于 Swift 引入了 Modul 概念,在類名前不必添加 前綴,僅限于 Swift 之間調(diào)用,如果有類名,方法名等沖突可以采用 Modul. 形式訪問。OC 調(diào)用 Swift 時, Swift 可以通過 @objc() 修改暴露給 OC 的符號名

2.2 對外訪問權(quán)限

正確使用 open > public > internal > filePrivate > private

2.3 注釋

注釋標識:option + cmd + /
注釋查看:option + 左鍵

2.4 盡量使用 Swift 原生對象

3. 文檔規(guī)范

3.1 文檔目錄結(jié)構(gòu)

  1. 簡介
    【 1.1 描述,1.2 特性 】
  2. 快速引入
    【 2.1 系統(tǒng)要求 2.2 安裝(至少包括 CocoaPods 安裝)】
  3. 使用方式
    【3.1 基本使用 3.2 高級特性 ....】

致謝(可選,比如 參考哪些框架 或者 移植了哪些代碼等)

3.2 書寫規(guī)范

  1. 標題:數(shù)字標號 +.(點) + (空格) + 標題內(nèi)容,如:2. 快速引入

附錄

1. <span id="podLib">pod lib 命令詳細使用</span>

比如 :我們以創(chuàng)建 TestPro 組件為例, 打開終端,cd 到指定目錄,執(zhí)行命令 pod lib create TestPro

等待 TestPro template 配置

//自動執(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

如果開發(fā)功能模板選擇 Quick
Which testing frameworks will you use? [ Quick / None ]

Quick

如果開發(fā) UI組件 選擇 Yes
Would you like to do view based testing? [ Yes / No ]

Yes

最終生成工程目錄如下:

projectInDemo.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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