【发布时间】:2020-10-06 20:09:56
【问题描述】:
由于文件数量,我的项目变得混乱,我需要开发人员的建议。 例如,我有字符串扩展,一开始我为每个目标创建一个。一个用于ios,一个用于手表操作系统等......
所以我有类似的东西:
- 适用于 iOS 的 extensionString.swift
- 用于 watchOS 的 extensionStrinWatchg.swift
- extensionStringTE.swift 今天的扩展
但是通过这种方法,我在一些目标之间得到了公共代码部分,重复代码永远不会好,你同意。
所以我开始制作commun String 扩展文件,比如
- extensionStringIOS+watch.swift
- extensionStringIOS+TD+watch.swift
- extensionStringIOS+TD.swift 等等……
添加仅针对我们获得的特定目标的版本:
- 用于 ios 的 extensionString.swift
- 用于 watchOS 的 extensionStrinWatch.swift
- extensionStringTE.swift 今天的扩展
- extensionStringIOS+watch.swift
- extensionStringIOS+TD+watch.swift
- extensionStringIOS+TD.swift 等等……
你明白……那很多,而且很乱。我有时间去寻找该放在哪个文件中 所以现在想象一下这种方法适用于所有事情...... 文件数量变得巨大...... 我在扩展、类和其他方面遇到了这个问题......
所以每个目标一个文件 -> 重复代码 第二种方法:文件数量庞大,项目凌乱,浪费时间
所以我有一个想法,但我想知道这是否是正确的做法。什么是约定?
我的想法是在我的项目中的所有目标之间共享一个 extensionString.swift,并将这样的东西用于不应该用于所有目标的代码部分
#if !os(watchOS)
// do something
#else
// do something different
#if
所以这应用在我的项目中(不仅是扩展,还有类等..)可以让我删除大量文件并像这个函数一样重新组合:
/// 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
}
【问题讨论】:
-
至少一个好的代码组织是使用
bool(forKey -
@vadian 刚刚改了,谢谢!
标签: swift xcode code-organization