如何在Xcode中拥有一个良好的项目代码组织?

问题描述 投票:1回答:1

我的项目由于文件太多,变得很乱,我需要开发人员的建议,例如我有字符串扩展名,一开始我为每个目标创建一个。一个用于ios,一个用于watch OS等...。

所以我有一些像:

  • extensionString.swift for iOS
  • 适用于watchOS的extensionStrinWatchg.swift。
  • 今天的extensionStringTE.swift扩展

但是用这种方法,我在一些目标之间得到了共同的代码部分,重复的代码总是不好的,你同意吗?

所以我开始制作公共字符串扩展文件,比如说

  • 扩展字符串IOS+watch.swift
  • ExtensionStringIOS+TD+watch.swift.
  • extensionStringIOS+TD.swiftetc ...

在此基础上添加只针对特定目标的版本,我们得到。

  • ios的extensionString.swift
  • 適用於 watchOS 的 extensionStrinWatch.swift。
  • 今天的extensionStringTE.swift扩展
  • 扩展字符串IOS+watch.swift
  • ExtensionStringIOS+TD+watch.swift.
  • extensionStringIOS+TD.swiftetc ...

你懂的... 这是一个很大的,这是混乱的。我松散的时间来寻找在哪个文件去所以现在想象这个方法的一切...文件的数量变得巨大...我有这个问题的扩展,类和其他... ...

因此,每个目标一个文件->重复码秒的方法:大量的文件,混乱的项目和时间的浪费

所以我有一个想法,但我想知道这是否是正确的方式来做。惯例是什么?

我的想法是,在我的项目中,所有的目标都共享一个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
    }
swift xcode code-organization
1个回答
0
投票

我认为这里的每一个答案都应该以大胖子IMHO开始。

没有什么灵丹妙药,你必须根据你的特定项目来决定选择哪种方式。

对我来说,我会尝试将所有的逻辑分离成小的框架,例如ExtensionsCrossplatform、ExtensionsIOS、ExtensionsWatchOS等。

一个把所有东西都放在一个地方的想法不是那么好,会导致所有模块和平台之间的紧密耦合。

事实上,很多大的应用都是由大量的小模块组成的(超过50个)。

这里有一个视频,可以更详细的描述这个想法。https:/badootech.badoo.comthe-immense-benefits-of-not-thinking in screenreens-6c311e3344a0。

© www.soinside.com 2019 - 2024. All rights reserved.