型号名称应以什么为前缀
What model names should be prefixed with
我的类型命名有问题,通常它适用于我的所有项目。
我正在使用 CQRS,很多时候我的应用程序的不同层都引用相似的 'context' 数据。
例如,我有一个 Player 上下文,它分布在查询模型、写入模型、领域模型等中。
基本上我的问题是,如果某些 class/struct/data 类型具体指的是 'Query' 类型,我应该将其命名为 PlayerQuery 还是 QueryPlayer。
根据我的理解,'PlayerQuery' 暗示它是对玩家数据的查询,另一方面 'QueryPlayer' 暗示某种 'Query' 行为。
我开始编码已经有一段时间了,但我仍在为正确命名事物而苦苦挣扎。
感觉 'PlayerQuery' 是更好的方法。
是否有任何书籍或在线资源可以解决这个问题?
非常感谢
It has been quite a while when i started coding but i still struggle with properly naming things.
与此处相关的精彩引语:
There are only two hard things in Computer Science: cache invalidation
and naming things.
-- Phil Karlton
你遇到这个问题是因为你试图以 CRUD
的心态来解决这个问题,而 CQRS(或 CQS)提倡关注实际的交互。即使应用程序的不同部分共享播放器上下文,使用它的原因也会不同。
例如,您将是:
- 查询分页玩家列表
- 询问单个玩家的详细信息
- 保存单个玩家的数据
- Bulk-updating多个玩家详细信息中的一个属性
在这些交互中的每一个中,您都应该以交互本身为线索来命名 Query/Command/DTO 对象。
因此数据 class 名称可以是:
- 玩家列表
- PlayerDetailForQuery
- PlayerDetailForSave
- PlayerDetailsForBulkUpdate
一个改进是为每个 class 名称加上对象类型的后缀:
- 玩家列表参数
- 玩家列表结果
- PlayerRow (or) PlayerItem (or) PlayerDetail
- 玩家事件
- 播放器规格
最好的实现方式是将交互与对象类型结合起来:
- FetchPlayerListParams
- FetchPlayerList结果
- GetPlayer详情
- 批量更新播放器参数
- 保存播放器命令
- PlayerSavedEvent
最重要的是,一旦您选择了约定(例如 Detail 而不是 Item 或 Row), 在整个代码中使用一致。
我的类型命名有问题,通常它适用于我的所有项目。
我正在使用 CQRS,很多时候我的应用程序的不同层都引用相似的 'context' 数据。 例如,我有一个 Player 上下文,它分布在查询模型、写入模型、领域模型等中。
基本上我的问题是,如果某些 class/struct/data 类型具体指的是 'Query' 类型,我应该将其命名为 PlayerQuery 还是 QueryPlayer。
根据我的理解,'PlayerQuery' 暗示它是对玩家数据的查询,另一方面 'QueryPlayer' 暗示某种 'Query' 行为。
我开始编码已经有一段时间了,但我仍在为正确命名事物而苦苦挣扎。
感觉 'PlayerQuery' 是更好的方法。 是否有任何书籍或在线资源可以解决这个问题? 非常感谢
It has been quite a while when i started coding but i still struggle with properly naming things.
与此处相关的精彩引语:
There are only two hard things in Computer Science: cache invalidation and naming things.
-- Phil Karlton
你遇到这个问题是因为你试图以 CRUD
的心态来解决这个问题,而 CQRS(或 CQS)提倡关注实际的交互。即使应用程序的不同部分共享播放器上下文,使用它的原因也会不同。
例如,您将是:
- 查询分页玩家列表
- 询问单个玩家的详细信息
- 保存单个玩家的数据
- Bulk-updating多个玩家详细信息中的一个属性
在这些交互中的每一个中,您都应该以交互本身为线索来命名 Query/Command/DTO 对象。
因此数据 class 名称可以是:
- 玩家列表
- PlayerDetailForQuery
- PlayerDetailForSave
- PlayerDetailsForBulkUpdate
一个改进是为每个 class 名称加上对象类型的后缀:
- 玩家列表参数
- 玩家列表结果
- PlayerRow (or) PlayerItem (or) PlayerDetail
- 玩家事件
- 播放器规格
最好的实现方式是将交互与对象类型结合起来:
- FetchPlayerListParams
- FetchPlayerList结果
- GetPlayer详情
- 批量更新播放器参数
- 保存播放器命令
- PlayerSavedEvent
最重要的是,一旦您选择了约定(例如 Detail 而不是 Item 或 Row), 在整个代码中使用一致。