我的程序有两个不同的版本概念: aDefinitionVersion和一个InstanceVersion. 它们都是int
。为了避免混淆,我决定创建2个特定的结构体,它们只包含一个int
字段(DDD值对象)。
我需要在它们两个上实现IEquatable<T>
,IComparable<T>
,重载操作符,管理序列化等。但是,除了类(和构造函数)的名称之外,它们是完全相同的。
最好的方法是什么?
我是这么想的:
- 复制/粘贴:最简单,但我必须维护2个文件。
- 代码生成:可能过度,可读性差。 泛型结构(仅在声明中使用的泛型类型):更难理解这个概念?
有更好的方法吗?如果不是,我应该用哪一个?
我认为这取决于确切的用例。
如果您只有两个变体(并且不期望更多),我可能会选择复制/粘贴选项。这将是最简单的,我希望像版本这样的简单类型很少有变化。只要记住写一些单元测试,这样你就可以确信没有一堆错误被复制。
如果变体只有,大部分相同,我也会选择复制/粘贴。也许您只想对一个变体进行一些转换?也许还有其他一些操作只对一种变体有意义?即使现在没有差异,您也需要考虑实际代表的类型,以及它们将来是否会出现分歧。如果你有更多的变量,并且所有的都是相同的,我可能会选择泛型结构,可能会有一些约束来限制泛型类型参数。只要确保你添加了合适的注释来解释你的想法。