Мой проект становится беспорядочным из-за количества файлов, мне нужны советы от разработчиков. Например, у меня есть строковые расширения, в начале я создавал по одному для каждой цели. Один для ios, один для ОС часов и т.д. c ...
, поэтому у меня было что-то вроде:
- extensionString.swift для iOS
- extensionStrinWatchg.swift для watchOS
- extensionStringTE.swift на сегодня Extension
Но с помощью этого метода у меня есть общая часть кода между некоторыми целями, и повторение кода никогда не годится, вы согласны.
Итак, я начал создавать файлы расширения командной строки, такие как
- extensionStringIOS + watch.swift
- extensionStringIOS + TD + watch.swift
- extensionStringIOS + TD.swift et c ...
добавляя к этому версию, которая предназначена только для определенной c цели, мы получаем:
- extensionString.swift для ios
- extensionStrinWatch.swift для watchOS
- extensionStringTE.swift на сегодня Расширение
- extensionStringIOS + watch.swift
- extensionStringIOS + TD + watch.swift
- extensionStringIOS + TD.swift et c ...
Вы понимаете ... Это много, и это грязно. Я теряю время, чтобы найти, в каком файле go Так что теперь представьте этот метод для всего ... Количество файлов стало огромным ... У меня проблема с расширениями, классами и прочим ...
Итак, один файл на цель -> второй метод повторения кода: огромное количество файлов, беспорядочный проект и трата времени
Итак, у меня есть идея, но я хотел бы знать, правильный ли это способ сделать. Какая конвенция?
Моя идея состоит в том, чтобы использовать один файл extensionString.swift для всех целей в моем проекте и использовать подобные вещи для частей кода, которые не должны использоваться для всех целей.
#if !os(watchOS)
// do something
#else
// do something different
#if
Итак это применялось в моем проекте (не только расширения, но и класс et c ..) могло заставить меня удалить тонны файлов и перегруппировать, например, эту функцию:
/// boolean indicating if the user enabled the weekend days setting
static var isWeekendDaysSettingEnabled: Bool {
#if !os(watchOS)
if IS_ICLOUD_ENABLED {
return NSUbiquitousKeyValueStore.default.bool(forKey: KeyValueID.weekendDays.rawValue)
} else {
return UserDefaults.standard.bool(forKey: KeyValueID.weekendDays.rawValue)
}
#else
return UserDefaults.standard.bool(forKey: "weekendDays")
#endif
}