gpt4 book ai didi

cocoa - 如何防止 Cocoa Controller 变得太大?

转载 作者:行者123 更新时间:2023-12-03 16:08:41 26 4
gpt4 key购买 nike

你有一些技巧或技术可以将 Cocoa Controller 类分解成更小的 block 吗?我发现无论我做什么, Controller 最终都会成为我设计中更复杂的类之一。基本的东西很简单,但是一旦我运行了几个弹出窗口或操作表,事情就会变得非常复杂。这并不是那么糟糕,但我仍然想将代码重构为几个独立的部分。

我考虑过类别,但代码并不是那么独立(例如,很多时候它需要利用 viewWillAppear),而且我发现我花了很长时间与编译器作斗争。我还考虑过使用继承在层中添加功能,但这感觉像是一种黑客行为。

最佳答案

问题不在于规模,而在于责任。您的 Controller 是否戴着不止一顶帽子?如果是这样,请将其分解为多个、每类一个作业的 Controller 。

类别有助于确定大小,但不能确定责任。如果你仍然在一个(合并的)类(class)中做多项事情,那么你仍然有一个问题;将它们移动到单独的文件中并没有解决问题。

单个类上有多个类别会带来方法冲突的风险:在多个类别中实现相同的方法,可能是在类别 B 中实现它,而忘记类别 A 已经有一个方法。当对象向自己发送消息并期望一个类别对该消息的响应并获取另一个类别的响应时,这将导致问题。

在主类 header 中声明所有类别可以减轻这种风险,因为您可以看到另一个类别已经具有您要输入的名称的方法。但是,您添加的每个方法(从而延长头文件)都会减轻缓解措施。

如果你的 Controller 戴着不止一顶帽子,请将其分解为多个类别。

我推荐Martin Fowler的书《重构》。重构你的代码就是清理它,而破坏太大的类(以及方法和函数)是这种清理的一个子集。

当然,曾经是一个的多个类需要替换以前在类内部的通信。 Cocoa提供了多种解决方案:

您不需要只选择一个,也不需要全部使用它们。哪种解决方案合适将取决于新类(class)之间的沟通需求。

关于cocoa - 如何防止 Cocoa Controller 变得太大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com