VIPER

Swift Platform Releases Swift Package Manager

VIPER 是一个轻量级的 软件架构 框架,用于 Swift。

整洁架构 是 Robert C. Martin 于 2012 年设计的一种软件架构模式,旨在推广软件设计的 SOLID 原则。VIPER 的概念是一种受整洁架构启发的 iOS 架构模式,最初由 Mutual Mobile 的开发者提出,并通过他们在 objc.io 上的文章而普及。此框架是上述架构原则的 Swift 实现,使您能够为 iOS、macOS 和 tvOS 构建 VIPER 应用。

安装

秉承 Swift 的风格,VIPER 仅以 Swift 包的形式提供。

Swift Package Manager

将以下内容添加到您的 Package.swiftdependencies: 数组中

.package(url: "git@github.com:thomverbeek/VIPER.git", from: "0.5.1"),

Xcode

在您的项目或工作区中,选择 File ▸ Swift Packages ▸ Add Package Dependency… 以添加 https://github.com/thomverbeek/VIPER 作为包依赖项。

VIPER 命令行工具

此软件包捆绑了 viper-tools,一个命令行实用程序。

$ swift run viper-tools
$ swift run viper-tools generate MyModule ~/Desktop/ --os macOS --verbose

关于 VIPER

VIPER 将应用程序逻辑划分为不同的责任组件

从概念上讲,这五个组件构成一个集合 Module,与 iOS 应用程序中的单个屏幕同义。每个模块的生命周期由 View 直观地表示,View 间接持有对所有组件的引用。这些组件以协调的顺序相互通信,一旦 View 关闭,生命周期结束。最终的代码清晰、可测试、模块化,并且可以与大型团队一起扩展。

VIPER 宣言并非没有缺陷

在野外有许多实现试图满足这些要求以及其他一些要求,但它们仍然有些不足。VIPER 作为框架可能难以掌握和完全实现,而 Swift 语言由于其语言怪癖和类型安全限制,又增加了更多障碍。大多数框架只是尝试将原始 Objective-C 示例代码翻译成 Swift,迫使开发人员手动连接组件并在类型之间强制转换。这些挫败感最终导致了此框架的开发,以便将 VIPER 带给大众。

“简洁是最终的 Sophistication”

此框架利用泛型、静态作用域和函数式响应式编程原则的组合,将 VIPER 提炼成一个不到 300 行代码的单个文件,包括注释。查看 VIPER.swift

所有这一切都产生了一个简单而精密的 VIPER 架构实现。因此,它简称为 “VIPER”。

什么是衔尾蛇 (Ouroboros)?

它是一个单向的 viper,正如徽标上所描绘的那样。

致谢