大多数这个问题没有确定的答案,但是我想知道社区的意见。我们将实现数据模型的新版本(暂时支持现有模型)。目前,我们有一些实现命名的选项:
1)使用一些实现符号(例如User
-> gmUser
)。我首先不喜欢它,因为它不能为我们提供未来变化的解决方案。另外,我不想将接口名称链接到实现
2)使用数字进行版本控制(例如User
-> v2User
/ User2
,User3
等)-这是一种更广泛使用的方法。但是这样的命名对我来说似乎很奇怪。另外,有一个子建议,只要没有人使用原始的User3
User
-> User
3)对版本使用前缀(例如User
-> AwesomeUser
,Application
-> AwesomeApplication
)。在幕后,它应该遵循字母顺序,但是总的来说,这样的命名只是说User
和AwesomeUser
是不同的实体。
我个人选择第三个选项。但是我的同行们说没有人使用该选项。这是有原因的。我知道那些使用这种命名方式的人大多将其用于营销。但是对我来说,它使代码更具可读性。
我想知道社区意见和一些最佳实践专家。
预先感谢
P.S。提供更多上下文-主要是关于GraphQL查询,因此User1
/ User2
-当前区别不在字段列表中,而在结构上与能力有关
答案 0 :(得分:0)
要在文件结构级别上实现版本控制
/models
/ver1
/User.js
/ver2
/User.js
它仅允许更改导入路径,但将命名保存在代码中
答案 1 :(得分:0)
我们使用了第二种方法(User
,User2
)。
很明显,命名是临时的,最终只有一种生存(当然,如果您不打算同时支持这两种模型),而User
和AwesomeUser
似乎需要两种版本出于不同原因的模型
字母顺序。我们希望User
和User2
位于同一位置。
您现在还可以将所有当前模型重命名为*Legacy
,只需创建User
作为新版本即可。这样,您只需在重构后删除所有*Legacy