Итак, я сейчас работаю над универсальным двоичным файлом для приложения, которое будет работать на iPad и iPhone. Различия в основном только изменения пользовательского интерфейса.
Итак, имея в виду, у меня есть класс с именем ConfigurationController, который имеет тип UIViewController. Затем я подклассифицирую ConfigurationController в iPadConfigurationController и iPhoneConfigurationController.
Теперь, много кода является общим, поэтому я абстрагировал его до ConfigurationController. Тем не менее, есть несколько функций, в которых изменения приводят к различиям кода в 1 строку. Я в настоящее время спорю с другими разработчиками о том, что делать с этим кодом.
Кажется, есть два пути:
1: вставьте методы в суперкласс ConfigurationController, затем используйте макросы, чтобы определить, запущено ли приложение на iPad или iPhone. Затем вызовите код, который когда-либо должен вызываться на основе этого.
2: сохранить методы в подклассах (iPadConfigurationController и iPhoneConfigurationController) и сохранить изменения в 1 строку. В результате дублируется около 300 строк кода. Тем не менее, это оставляет путь в будущее, так как если изменения происходят сейчас, они могут измениться после дальнейшего развития. В этом случае у меня уже есть функции в подклассах.
Что могло бы быть более полезным и иметь меньше накладных расходов?