2010-10-20 15 views
0

因此,我目前正在为要在iPad和iPhone上运行的应用程序开发通用二进制文件。差异基本上只是UI的变化。将iPhone/iPad代码抽象为通用二进制文件时使用的约定是什么?

因此,考虑到这一点,我有一个名为ConfigurationController的类,其类型为UIViewController。然后,我将ConfigurationController分类到iPadConfigurationController和iPhoneConfigurationController中。

现在,很多代码很常见,所以我将它抽象到ConfigurationController。但是,有一些功能会导致1行代码差异。我目前正在与其他开发人员就如何处理此代码进行辩论。

似乎有两条路径: 1:将方法推入ConfigurationController超类,然后使用宏来确定应用程序是在iPad还是iPhone上运行。然后调用哪些代码需要基于此调用。

2:将方法保留在子类(iPadConfigurationController和iPhoneConfigurationController)中并保持1行更改。这导致大约300行代码被复制。但是,这为未来留下了一条道路,因为如果现在有变化,在进一步发展之后可能会发生变化。在这种情况下,我已经有了子类中的功能。

哪个会更有利,开销更少?

回答

1

将单行差异重构为基类中声明但在派生类中实现的小帮助函数(我更像是一个C++人,所以我希望这个术语很有意义)。

+0

虚拟功能。我想到了这一点,但我只是做了一些计算,这将迫使我做额外的40+功能>。< – ColdLogic 2010-10-21 20:59:36

+0

然后,也许你的两个版本不是那么相似。难道它也是在许多情况下唯一的区别是数据,比如UI维度?如果是这样,那么将它们表示为由派生类构造函数设置的基类变量。 – 2010-10-22 09:55:37

相关问题