Swift 组件开发规范

[TOC]

最近在公司内部写了一些 Swift 相关组件的一些思考

Swift 组件开发规范

1. 工程规范

1.1 组件工程创建

利用 pod 自带命令 pod lib create 构建工程(使用详情请见 附录)

Swift 语言组件开发有别于 OC 版本的开发, 引入了 Module 概念,尤其对访问权限关键字的使用:
open > public > internal > filePrivate > private

使用自带命令创建工程,在代码测试时,避免一些访问权限不正当使用,提前暴露使用问题。 比如:function 函数使用 internal 权限,但是生成 framewoek 后却无法访问等

1.2 库的导入

默认情况下,用到哪个库就要导入哪个库,无疑增加了很多重复的工作量,过去 OC 组件工程以 pch 文件 实现全局导入,Swift 引入了 Module 概念,无法在使用 pch。

解决方案

  1. 构建 工程名-Bridging-Header.h 文件
  2. 引入 framewok,比如 Swift版网络框架Bowling,通过 #import

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

1.3 单元测试

1.3.1 必要性

测试即使用文档

对于组件使用人员来看,可以通过阅读单元测试来了解功能的使用,方便查看

提高生产效率

提前发现 bug,快速为 dev 提供反馈的机制; 尤其 一处小小的改动,快速验证

改善代码结构设计

单元测试可以充当一个设计工具,它有助于开发人员去思考代码结构的设计,让代码更加有利于测试

1.3.2 使用

系统自带的 XCTestCase 框架 【Unit Testing】

第三方框架 Quick

1.4 思维演化

1.设计先行:分析 -> 调研 -> 设计 -> 架构 -> 拆分实现

2.编程范式跨越:面向对象编程 -> 面向协议(接口)编程

2. 编码规范

2.1 类名命名规范

由于 Swift 引入了 Modul 概念,在类名前不必添加 前缀,仅限于 Swift 之间调用,如果有类名,方法名等冲突可以采用 Modul. 形式访问。OC 调用 Swift 时, Swift 可以通过 @objc() 修改暴露给 OC 的符号名

2.2 对外访问权限

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

2.3 注释

注释标识:option + cmd + /
注释查看:option + 左键

2.4 尽量使用 Swift 原生对象

3. 文档规范

3.1 文档目录结构

  1. 简介
    【 1.1 描述,1.2 特性 】
  2. 快速引入
    【 2.1 系统要求 2.2 安装(至少包括 CocoaPods 安装)】
  3. 使用方式
    【3.1 基本使用 3.2 高级特性 ....】

致谢(可选,比如 参考哪些框架 或者 移植了哪些代码等)

3.2 书写规范

  1. 标题:数字标号 +.(点) + (空格) + 标题内容,如:2. 快速引入

附录

1. pod lib 命令详细使用

比如 :我们以创建 TestPro 组件为例, 打开终端,cd 到指定目录,执行命令 pod lib create TestPro

等待 TestPro template 配置

//自动执行
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

如果开发功能模板选择 Quick
Which testing frameworks will you use? [ Quick / None ]

Quick

如果开发 UI组件 选择 Yes
Would you like to do view based testing? [ Yes / No ]

Yes

最终生成工程目录如下:

Swift 组件开发规范_第1张图片
projectInDemo.png

你可能感兴趣的:(Swift 组件开发规范)