Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/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,当我使用具有结构模式的协议(如MVP或VIPER)时,我通常在同一文件中添加符合协议的协议和类 例如,在视图组件的MVP中: file: ListViewController.swift protocol ListView {} class ListViewController: ListView {} file: ListPresenter.swift protocol ListPresenter {} class MainListPresenter : ListPresenter {}

当我使用具有结构模式的协议(如MVP或VIPER)时,我通常在同一文件中添加符合协议的协议和类

例如,在视图组件的MVP中:

file: ListViewController.swift
protocol ListView {}
class ListViewController: ListView {}
file: ListPresenter.swift
protocol ListPresenter {}
class MainListPresenter : ListPresenter {}
对于演示者组件:

file: ListViewController.swift
protocol ListView {}
class ListViewController: ListView {}
file: ListPresenter.swift
protocol ListPresenter {}
class MainListPresenter : ListPresenter {}
1当同一文件中只有一个类符合协议和类时,添加协议和类是否是一种良好的做法

2是否可以将包含视图控制器的文件命名为其名称

3我可以用协议名命名演示者文件,还是缺少一致性

在本例中,您将如何命名文件名和类

谢谢

1当同一文件中只有一个类符合协议和类时,添加协议和类是否是一种良好的做法

如果只有一个类符合协议,我强烈认为您误用了协议。如果您的模式鼓励这样做,那么我将强烈质疑该模式的价值

但是把它们放在同一个文件中就可以了。将密切相关的类型放在一个文件中是好的

2是否可以将包含视图控制器的文件命名为其名称

当然

3我可以用协议名命名演示者文件,还是缺少一致性


当然……但是,如果您有一个协议只有一个实现,那么很可能是出了问题,您应该深入改进它,而不是文件名。

我被迫在一个项目中使用VIPER,我必须强烈同意这一观点。这样做是为了方便地对各个层进行模拟,但在我看来,如果不进行模拟,不使用UI测试而不是单元测试,体系结构会更好。它创建了大量的层,每个层都有自己的协议,这些协议只是相互委托。即使是单元测试的问题,也可以通过抽象而不是模拟来大大改进@RobNapier事实上,我只有一个符合协议的类的原因是我使用协议来解耦这些类并允许单元测试模拟。然而,我的问题更多的是关于文件名和类的命名。。。你同意问题中的片段吗?片段很好;它成为问题的唯一原因是您可能过度使用协议。实现良好的可测试性通常不需要大量的模拟和协议。当您简化体系结构时,您对将内容放入哪个文件的顾虑通常会消失。Viper相关: