Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift中将大型类组织到文件和名称空间中_Swift - Fatal编程技术网

在Swift中将大型类组织到文件和名称空间中

在Swift中将大型类组织到文件和名称空间中,swift,Swift,我有一些非常高级的Swift代码,它是通过将代码移植到Swift而创建的 它是三个持久集合(向量、哈希集、哈希映射) 在端口之后,我添加了完整的COW支持,这使我对swift COW有了一些了解,但对swift代码设计和组织文化了解不多 每个集合现在都驻留在自己的文件中,它需要的所有其他非公共类都位于其上(我认为是在上面而不是下面,因为swift的一些早期版本要求这样做) 经验丰富的swift开发人员如何组织这种代码 我主要是因为不像java、C++、Python、C++、C,没有明显的方法来

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

它是三个持久集合(向量、哈希集、哈希映射)

在端口之后,我添加了完整的COW支持,这使我对swift COW有了一些了解,但对swift代码设计和组织文化了解不多

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

经验丰富的swift开发人员如何组织这种代码


<>我主要是因为不像java、C++、Python、C++、C,没有明显的方法来处理这种问题——我想,这是因为斯威夫特的目标C的后备和互操作性< P >取决于你到底想要达到什么,但是我的最初想法是:

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

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

你可以用

//MARK:
(pragma标记)以便于在IDE中导航的方式装饰代码

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

最后,我注意到您的测试是空的,请查看“Quick”和“Nimble”,它们是流行的测试框架,可能会帮助您解决问题


希望这至少有一点帮助。

传统上,Swift风格要求每个文件有一个类。我将这些大文件拆分为它们的组件类,并称之为“天”。

如果这个问题被固执的性质所导致,我不会感到惊讶,但是我真的不遵循…*“因为不像java,C++,Python,C++,和C,没有明显的方法来处理这种问题[在SWIFT ]中。处理它的方法与任何OOP语言都是一样的。除了Swift之外,您还有协议和扩展来帮助您。(或者你指的是UIKit或Xcode?)我担心的是完全相同的事情,但我指的是将组织划分为文件和名称空间,那么你不是在谈论Swift(或Objective-C),而是在谈论Xcode项目。请考虑重新标记你的问题!我只是扩展了标题,这样说,加上我把它放进了可敬的AP大写字母,希望它能安抚主持人我的测试是空的?天哪,这是我现在要解决的一个git问题,感谢你指出如何将类组织成更小的文件,这正是我个人的问题,我将按类进行分解。每个文件1个类,以及在同一文件夹中对同一超类进行子类化的任何类。不要太花哨。有些人将协议和扩展名提取到其他文件,但我认为这没有用,因为您希望option click将您带到IDE中一个有意义的地方。我刚刚将测试从无意义的目录“collection tests”移动到CollectionTests:虽然没有名称空间,但。。。Ans不同集合的源文件中的某些类具有相同的名称,如“Node”。这种命名方案在每种情况下都非常合理,但一旦它们被移动到自己的文件并成为非私有文件,就会产生冲突……问题是每个文件中较小的类都有相似的名称——每个向量、集合和贴图文件中都有一个节点类。。。在Java中,我用包解决了这个问题,在C#中使用了名称空间&C。