2015-07-16 2 views
1

Я хочу реализовать вспомогательный класс для некоторых постоянных значений, а также часто используемых кодовых блоков. Между нижними уровнями использования, какой из них правильный?Правильный способ доступа к обычно используемым кодовым блокам из одного класса в Swift

  1. Определение их как статические Пусть ЗНАЧЕНИЯ
  2. Определение их как функции класса

    class Constants 
    { 
        // 1: defining them as static let values 
        static let storyboardA = UIStoryboard(name: "StoryboardA", bundle: nil) 
        static let storyboardB = UIStoryboard(name: "StoryboardB", bundle: nil) 
        static let rootVC = UIApplication.sharedApplication().delegate?.window!!.rootViewController 
    
        // 2: OR defining them as class functions 
        class func getStoryboardA() -> UIStoryboard { 
         return UIStoryboard(name: "storyboardA", bundle: nil) 
        } 
    
        class func getStoryboardB() -> UIStoryboard { 
         return UIStoryboard(name: "StoryboardB", bundle: nil) 
        } 
    
        class func getRootVC() -> UIViewController? { 
         return UIApplication.sharedApplication().delegate?.window!!.rootViewController 
        } 
    } 
    

ответ

1

Ваши примеры делают разные вещи (инстанцирует новый один экземпляр по сравнению с использованием того же снова и снова еще раз). Я бы пошел с методами и повторно использовал повторно используемые объекты в частных переменных.

Я бы очень рекомендовал против, используя этот подход. Сначала это выглядит заманчиво, но вместе с тем он несет огромные расходы в долгой ошибке. Это обеспечивает очень плотную кодовую связь и плохое повторное использование кода. Тестирование будет намного сложнее.

Ваш вспомогательный класс станет больше и больше, и у него нет ни одной «темы». Он отвечает за самые разные вещи в вашем приложении. Маловероятно, что вам нужна раскадровка для одной части вашего приложения во многих других частях и т. Д.

В большинстве случаев, если вам нужно получить доступ к этим вещам повсюду, ваш дизайн приложения получит прибыль от некоторого рефакторинга. Например, вам редко приходится обращаться к делегату приложения. Это удобная «контрольная точка», которая легко доступна, чтобы прищурить ее кодом, который действительно не принадлежит их (был там, сделал это, выучил мой урок).

Чуть более здравый подход состоит в том, чтобы сделать отдельные классы-помощники и бросить их в классы-классы, и я бы тоже не делал их классы классами.

+0

>> «Создание экземпляра нового экземпляра по сравнению с тем же снова и снова». Не могли бы Вы уточнить? Насколько я знаю, 'static let' будет создаваться только один раз –

+0

@AnilVarghese Да, и заданные методы класса будут, напротив, возвращать новые объекты. – Eiko

+0

О, вы имеете в виду, что вы бы использовали методы таким образом, чтобы они возвращали частные статические переменные. более похоже на сочетание обоих подходов OP. Может быть, вы можете показать пример кода, будет более полезным –

Смежные вопросы