毒蛇的第一个项目

在完成我在Viper的第一个项目之后,这篇博客文章只是一些个人经验。 如果您以前从未听说过Viper和干净的体系结构,则应该明确地观看此视频:

最初,一切都进行得很顺利,当我独自从事该项目时,我对自己感到非常高兴。 但是随后另一位开发人员加入了🙂他的第一个反应并不令人鼓舞:

男人,这个毒蛇的东西有点冗长。 我在各处写协议和存根……

因此,我再次查看了代码。 好吧,他是对的。 如果您遵循这本书,最终会得到很多协议,在大多数情况下只能使用一次。 那时的某个地方,我还观看了有关保持代码可持续性的视频:

类由不同颜色的圆圈表示,您在类中的依存性越高,圆圈越大。

中心的蓝色大圆圈是AppDelegate。 好吧,它保留了对某些顶级视图控制器的引用,处理了一些通知,初始化了一些数据访问对象。 似乎其中没有太多代码,但最终仍然有很多讨厌的依赖项。 如果您考虑一下,这是有道理的。 AppDelegate可以引用RootViewController,而RootViewController可以引用MenuViewController,依此类推。因此,依赖关系的增长。

第二张图是我的第一个Viper项目。 AppDelegate做得少得多。 基本上,它只是创建一个根线框并将控制权传递给它。 每个模块仅知道需要直接调用的模块。 当然,这是您在任何项目中都想拥有的东西,但是在Wireframes中进行所有设置会使依赖项更加公开,并有助于使模块具有针对性和隔离性。

我最喜欢的是:

  • 错误少很多。 它们几乎没有,而潜入其中的那些易于修复。
  • 代码变得更像可互换的乐高积木。 使用现有模块组装新模块,重新组装旧模块,引入接口并为某些类添加不同的实现,所有这些都很容易做到。 我认为,这种方式的主要原因是依赖注入以及线框中所有模块的创建/组装。
  • 再一次,重构非常容易。 想象一下,更改应用程序的整个导航树不会再让您感到恐惧🙂

几个月后,我很想再次查看该项目。 但是到目前为止,它看起来非常有前途!