美文网首页
Swift 组件开发规范

Swift 组件开发规范

作者: 践行者 | 来源:发表于2019-10-31 17:45 被阅读0次

    [TOC]

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

    Swift 组件开发规范

    1. 工程规范

    1.1 组件工程创建

    利用 pod 自带命令 pod lib create 构建工程(使用详情请见 <a href="#podLib">附录</a>)

    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>

    其中 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. <span id="podLib">pod lib 命令详细使用</span>

    比如 :我们以创建 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

    最终生成工程目录如下:

    projectInDemo.png

    相关文章

      网友评论

          本文标题:Swift 组件开发规范

          本文链接:https://www.haomeiwen.com/subject/plwtbctx.html