SuperAPI AI 工具集

viper-architecture-rambler

编程与开发

查看项目

更新于 10-15 20:31

技能介绍

用途:该技能面向 iOS 应用架构设计与重构,主推 Rambler&Co iOS 团队定义并文档化的 VIPER 架构,通过 View、Interactor、Presenter、Entity、Router 五个基于协议的组件落实单一职责原则。核心原则是 Entity 不进入表示层,Interactor 与 Presenter 之间只用简单数据结构传递,避免业务逻辑污染 UI。

适用判断:多特性应用、长期项目(6 个月以上)、3 人以上团队、需要大量单元测试覆盖、需要 iOS/iPadOS/macOS 多平台共享代码时推荐使用;单屏工具、需求不明的快速原型、周末项目或概念验证、时间紧张的小团队不建议使用。

组件职责与数据流:View 只展示内容并转达用户输入;Interactor 承载与平台无关的业务逻辑与用例;Presenter 负责视图逻辑与数据格式化;Entity 为无行为的普通模型对象;Router 负责导航与模块组装。典型流程为用户操作→View→Presenter→Interactor→Entity/DataStore,再以简单数据反向回到 Presenter 格式化并驱动 View。应避免的行为包括:把 NSManagedObject/Entity 传给 Presenter、Presenter 直接访问 Core Data 或发起网络请求、View 直接调用 Interactor、ViewController 直接实例化其他 ViewController。

工具与用法:Rambler 生态提供 Generamba 代码生成器(安装命令 gem install generamba、generamba setup、generamba gen WeatherModule rviper_controller);ViperMcFlurry 框架提供 RamblerViperModuleInput 与 RamblerViperModuleOutput 基础协议,支持工厂式与 segue 式模块创建及链式配置;Typhoon 用于依赖注入。模块通信通过 Module Input(父到子)与 Module Output(子到父)协议实现,Presenter 可同时实现二者。

测试与重构:测试顺序建议 Interactor→Presenter→View,分别覆盖业务逻辑、数据格式化与 UI 状态。重构可从 MVC 的 Massive View Controller 拆分为各层协议实现。

限制与参考:资料给出测试步骤顺序、反模式对照表与重构示例;其他收费、价格、平台支持范围等信息暂未提供。相关参考包括 The Book of VIPER、ViperMcFlurry、Generamba、rambler-it-ios 示例应用与 objc.io 文章。