在过去,您经常有一个"低级别"的数据模块,不依赖于任何其他模块,但可以被它们引用,例如获取整个系统中使用的枚举.
现在我们在模块之间有面向对象的接口,带有调用和事件.我的问题是,我们是否应该只有一个地方可以定义整个系统中使用的枚举,这些枚举应该由需要它们的每个接口引用?
我已经看到了软件,其中每个接口上重新定义了相同的枚举,并将转换函数传递给另一个模块.
例如,IModule1可能具有的接口
enum module1_state
{
Unknown,
NotRunning,
Running
}
Run Code Online (Sandbox Code Playgroud)
以及IModule2可能具有的接口
enum module2_state
{
Unknown,
NotRunning,
Running
}
Run Code Online (Sandbox Code Playgroud)
在模块1例如收集数据的情况下,模块2执行一些逻辑,然后将数据进一步传递到第三模块,例如GUI.
在许多情况下,枚举将是真正不同的,因为例如,第二模块可以抽象出第三模块不需要的一些信息,并传递简化版本.
但在某些情况下,它们并没有什么不同,我认为枚举仍然在每个界面上重新定义.一个示例是作为几个不同用例的一部分执行的操作.操作是相同的,但根据用例,几个小细节是不同的.携带用例细节的枚举通过接口传递到高级逻辑模块,然后通过另一个接口传递到较低级别模块.它在每个接口上重新定义,因此必须在高级逻辑模块中进行转换.
还有一些其他模块只是将较旧的现有接口转换为较新的接口,同样,两个接口都重新定义了相同的枚举.
谁能告诉我哪种是最佳做法?
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |