gpt4 book ai didi

swift - 将 Swift 中的大类组织到文件和 namespace 中

转载 作者:行者123 更新时间:2023-11-28 15:00:46 24 4
gpt4 key购买 nike

我有一些非常高级的 Swift 代码,它们是通过将代码移植到 swift 而创建的。

它是三个持久化集合(vector、hash set、hash map)。

https://github.com/sbohmann/mutabor-swift-coillections/tree/master/collections

在移植之后,我添加了完整的 COW 支持,这让我对 swift COW 有点聪明,但对 swift 代码设计和组织文化却不太了解。

现在每个集合都位于自己的文件中,它需要的所有其他非公共(public)类都位于它之上(我认为在顶部而不是底部,因为一些早期版本的 swift 要求这样做)。

经验丰富的 Swift 开发人员将如何组织此类代码?

我问的主要是因为与 Java、C#、Python、C++ 和 &c 不同,没有明显的方法来处理这类问题 - 我猜,这是由于 swift 的 Objective C 背景和互操作性😊

问题:PersistentVector、PersistentHashset 和 PersistentHashMap 类都有一个文件私有(private)类名 Node,外加一些相同的名称。我无法在不重命名的情况下将 Node 类移动到它自己的文件中,因为 swift 中没有包或 namespace 。

因此,我应该:* 将 Node & al 重命名为 PersistentVectorNode,...* 让 Node & al 坐在他们巨大的源代码文件中* 将 PersistentVector & al 移动到它们自己的模块中,这意味着我需要复制它们所有的通用、非公开代码

现在我回到了一个没有命名空间的世界,就像 C 一样,我意识到它们的重要性。

我的 C 项目往往比我的 swift 项目简单得多。来自 Objective C 的前缀是一个我真的很想留下的 hack....

附言我知道内部使用的类使用前缀。向量、集合和映射的 PVNode、PHSNode、PHMNode。整个事情现在更清晰了,但使用前缀仍然感觉不对……也许我会习惯它,就像在 Objective C 或 C 中一样。就像人们在引入 namespace 之前在 C++ 中所做的那样。

最佳答案

具体取决于您要实现的目标,但这是我的初步想法:

首先,我会将文件和文件夹名称的首字母大写,即 common.swift->Common.swift。从文件夹名称中删除空格。

考虑按类将您的代码分解成更小的文件,并使用子目录进一步组织它(这样您就没有 800 多个行文件)。

你可以使用

//MARK:

(pragma marks)以易于在 IDE 中导航的方式修饰您的代码

此外,您还可以利用类函数。

最后,我注意到您的测试是空的,请查看“Quick”和“Nimble”,它们是可能对您有所帮助的流行测试框架。

希望至少能有所帮助。

关于swift - 将 Swift 中的大类组织到文件和 namespace 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48954867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com