我在命名类型时遇到问题,通常适用于我的所有项目。
我正在使用CQRS,并且很多时候我在应用程序的不同层中引用相似的数据“上下文”。 例如,我有一个播放器上下文,遍及查询模型,写入模型,域模型等。
基本上我的问题是,如果某些类/结构/数据类型专门引用“查询”类型,我应该将其命名为PlayerQuery还是QueryPlayer。
根据我的理解,“ PlayerQuery”表示它是对玩家数据的查询,而“ QueryPlayer”则表示某种“查询”行为。
我开始编码已经有一段时间了,但是我仍然无法正确地命名事物。
感觉'PlayerQuery'是更好的方法。 有什么书籍或在线资源可以解决这个问题吗? 非常感谢
答案 0 :(得分:1)
开始编码已经有一段时间了,但是我仍然无法正确地命名事物。
与此处相关的好报价quote:
计算机科学中只有两件难事:缓存无效 并命名事物。
-菲尔·卡尔顿
之所以遇到这个问题,是因为您试图以CRUD
的心态来解决问题,而CQRS(或CQS)则提倡专注于实际的交互。即使应用程序的不同部分共享播放器上下文,其使用原因也会有所不同。
作为示例,您将成为:
在每种交互中,您都应将交互本身作为提示来命名Query / Command / DTO对象。
因此数据类名称可以是:
一个改进将是在每个类名后加上对象类型:
最好的实现方式是将交互与对象类型结合起来
最重要的是,一旦选择了约定(如 Detail 而不是 Item 或 Row ),就必须保持一致的用法整个代码。