【问题标题】:How to handle huge view controllers so code is not dirty?如何处理巨大的视图控制器使代码不脏?
【发布时间】:2016-07-30 18:01:14
【问题描述】:

我现在正在开发的应用程序有问题:我的一个UIViewControllers 很大(大约 3000 行)。

现在,我创建了这个视图控制器的扩展来处理委托方法,以便“拆分”这个控制器。例如,我有一个名为 XYZMainViewController 的主视图控制器,因为这个控制器是 UITextField 的代表,所以我创建了一个扩展 XYZMainViewControllerTextFieldDelegateExtension.swift,我在其中管理 UITextFieldDelegate 方法。

这样做仍然很脏。我想知道如何处理像这样的大型控制器是一种好习惯。

【问题讨论】:

标签: ios model-view-controller code-structure


【解决方案1】:

您是否考虑过使用 MVVM(模型视图视图模型)来设计您的应用程序,MVVM 的想法是避免使用巨大的控制器。有很多用户指南解释了如何在你的 IOS 应用程序中使用 MVVM。半年前我也遇到过同样的情况,然后我在我的应用程序中采用了 MVVM,我对它非常满意,因为我的控制器并不大,我可以在我的应用程序中轻松重用代码,而且创建单元测试也更容易. 请按照本指南解释什么是 MVVM 以及如何使用

它https://www.raywenderlich.com/74106/mvvm-tutorial-with-reactivecocoa-part-1

https://www.raywenderlich.com/74131/mvvm-tutorial-with-reactivecocoa-part-2

【讨论】:

    【解决方案2】:

    3000 行是 hmmmm hugeeeeeee。

    您已经在控制器中执行了大量任务。控制器应该控制视图。在我看来(我创建 iOS 应用程序结构的方式)控制器应该执行视图控制,将数据从模型传递到视图(更具体地说是从操作数据的类)。

    “关注点分离”在这里很重要。不要在控制器内部实现您的业务逻辑。应该有一个单独的模块来处理您的所有业务逻辑。如何操作模型并完成功能。然后这个类被控制器用来执行视图更新。

    无论你设计什么类型的操作系统视图,它的控制器都不能有3000行。授权不是问题。控制器是进行委派的好地方。在这些委托方法中,执行某些业务不是控制器的工作。 IOS 应用有一些设计模式,例如 MVC、MVVM。

    但是您仍然必须有效地使用“这些设计模式。将通用功能移到一个地方等。业务逻辑的实现。模型的操作。与数据库的通信。

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      相关资源
      最近更新 更多