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

[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。

解決方案

  1. 構(gòu)建 工程名-Bridging-Header.h 文件
  2. 引入 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)

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

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

3.2 書(shū)寫(xiě)規(guī)范

  1. 標(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

最終生成工程目錄如下:

projectInDemo.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 水平有限,有誤請(qǐng)諒解 注意:本文很多輸出格式是16進(jìn)制格式。使用版本:MySQL 5.7.22 經(jīng)常有朋友問(wèn)我一些...
    重慶八怪閱讀 1,527評(píng)論 0 1
  • 和閨女一起看動(dòng)畫(huà)片。我問(wèn):豬媽媽臉上怎么一道一道滴?妞兒答:媽媽,那是斑馬[捂臉][捂臉][捂臉]明明是豬鼻子呀
    平常心的書(shū)窩閱讀 465評(píng)論 0 0
  • 當(dāng)有一天,你走在路上,忽然有個(gè)小朋友跑過(guò)來(lái)一臉燦爛說(shuō),阿姨好,你肯定會(huì)覺(jué)得,神經(jīng)病吧,誰(shuí)家孩子那么沒(méi)禮貌,...
    謝美閱讀 450評(píng)論 0 2

友情鏈接更多精彩內(nèi)容