MVC 模式是一个非常经典且精简的设计模式,常见的 iOS 项目基本上都采用了这种模式进行开发。 然而,随着项目规模的增长,MVC 模式已经无法很好地帮助我们解耦,构建一个易维护的项目变得愈发艰难。 业务逻辑愈加复杂,导致项目的代码量剧增是最直接的原因。某个 View Controller 可能会有几千行代码,这样的项目代码易读性非常差,维护难度也会增大。而且,这也容易导致数据的读写不同步,在较为混乱的代码中维护复杂的数据流,非常容易导致盘根错节的问题。 MVVM 在 MVC 的基础上增加了 ViewModel,实现了与 MVP 相近的效果。 由于 App 开发往往涉及许多导航逻辑的处理,而这些导航逻辑如果与业务逻辑耦合在一起就会难以管理,MVVM-C 也在iOS开发社区中应运而生。 接下来,请和 Ficow 一起结合架构图来分析这两种App设计模式吧~
MVC 模式是一个非常经典且精简的设计模式,常见的 iOS 项目基本上都采用了这种模式进行开发。 然而,随着项目规模的增长,MVC 模式已经无法很好地帮助我们解耦,构建一个易维护的项目变得愈发艰难。 业务逻辑愈加复杂,导致项目的代码量剧增是最直接的原因。某个 View Controller 可能会有几千行代码,这样的项目代码易读性非常差,维护难度也会增大。而且,这也容易导致数据的读写不同步,在较为混乱的代码中维护复杂的数据流,非常容易导致盘根错节的问题。 MVP 在 MVC 的基础上采用了面向接口/协议编程,最终使业务逻辑代码更易测试。如果结合 Clean Architecture,还可以有效地减轻我们的思维负担。 接下来,请和 Ficow 一起结合架构图来分析这两种App设计模式吧~
| Swift , iOS , 架构 , 测试 , XCTest
如今,项目中的业务逻辑越来越复杂,代码量也疯狂飙升,某个 View Controller 可能会有几千行代码。这些项目的代码易读性非常差,维护难度也比较大,测试的难度更大! 如果需要进行人工测试,而且如果App中的运行时状态非常多,就会非常消耗测试人员。 有什么办法可以解决或者至少缓解一下这个问题吗?目前来看,自动化测试是一个最优解。对于开发人员而言,单元测试是最常见的自动化测试,也是比较有效的测试方法。 然而,想写出易测试的代码需要掌握一定的知识和技巧。接下来,请和 Ficow 一起看看如何基于依赖注入和控制反转构建易测试的代码吧~