2010-10-20 14 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

相關問題