MVVMC —在Runtastic适应MVVM设计模式

为什么我们关心建筑

在Runtastic,我们已经创建了38个iOS应用程序,我们的团队已经发展到20个iOS开发人员,并且我们的iOS代码库包含超过700,000行代码。 不断壮大的团队会导致代码库不断壮大,从而导致更高的复杂性和更多的代码依赖性。 除非您关心体系结构并在创建软件组件时遵循一些规则,否则这可能会以灾难告终:

  • 遵循单一责任原则
  • 可测试性设计
  • 有明确的依赖性
  • 保持代码可读性和可维护性

我们都从苹果公司的MVC开始,它可以变成Massive View Controller(在那完成了)。 尝试运行`find。 型f -exec wc -l {} + | 在项目的根目录中对-n`进行排序 。 您可能会像我们一样找到具有数千行代码的ViewController。

意识到使用MVC遵守上述规则时,我们面临着越来越多的挑战,因此我们着手寻找其他设计模式。 作为iOS社区中的当今热门话题,您可以在各种设计模式之间进行选择,包括MVC,MVP,MVVM或VIPER。 经过研究后,我们决定采用MVVM,但仍未解决一些问题,例如路由(显示新屏幕)或数据绑定。 因此,我们还仔细研究了VIPER,它在解决这些问题方面确实有很好的想法。 但是在VIPER中,我们经历了不利的一面,即存在大量的样板代码以及不习惯这种模式的开发人员的陡峭学习曲线。 最后,我们将从VIPER中学到的知识整合到我们自己的MVVM设计模式中。

MVVMC —什么是C?

C代表“calçots”,这是加泰罗尼亚语起源的一种特定类型的洋葱,与我们的同事和这种模式的发起者相同。

在Runtastic博客上阅读全文