Java数据传输对象命名约定?

新手上路,请多包涵

在这种情况下,您有“传输对象”(POJO 仅包含 getter/setter),这些对象由客户端库传递给您的 API,命名传输对象的最佳方式是什么?

 package com.x.core;

public class Car {
        private String make;
        private String model;

        public Car(com.x.clientapi.Car car) {
             this.make = car.getMake();
             this.model = car.getModel();
        }
}

在此示例中,您的主类和传输对象都具有名称 Car 。它们在不同的包中,但我认为使用相同的名称会造成混淆。是否有关于如何命名传输对象的最佳实践?

原文由 Marcus Leon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 718
2 个回答

我通常将“DTO”添加到类名称的末尾,并将所有 DTO 放在它们自己的包中。在您的示例中,我将其称为 com.x.core.dto.CarDTO。

原文由 IaCoder 发布,翻译遵循 CC BY-SA 2.5 许可协议

数据 传输 对象 类应遵循 Java 语言规范 中定义的 名称约定

类别名称应为描述性名词或名词短语,不能过长,大小写混合,每个单词首字母大写。

 ClassLoader
SecurityManager
Thread
Dictionary
BufferedInputStream

[…]


DTODto 为类名添加后缀除了表明它携带数据而没有任何行为外,不会透露太多关于类本身的信息。因此,与其仅仅将对象称为 DTO,还不如考虑更有意义的名称,这些名称可为类传达更好的语义。

以下是您可以使用的名称建议的非详尽列表:

  • SomeSortOfCommand
  • SomeSortOfConfiguration
  • SomeSortOfCredentials
  • SomeSortOfDetails
  • SomeSortOfElement
  • SomeSortOfEvent
  • SomeSortOfFilter
  • SomeSortOfHeader
  • SomeSortOfInput
  • SomeSortOfInstruction
  • SomeSortOfItem
  • SomeSortOfMessage
  • SomeSortOfMetadata
  • SomeSortOfOperation
  • SomeSortOfOutput
  • SomeSortOfPayload
  • SomeSortOfProjection
  • SomeSortOfProperties
  • SomeSortOfQueryParameter
  • SomeSortOfQueryResult
  • SomeSortOfRepresentation
  • SomeSortOfRequest
  • SomeSortOfResource
  • SomeSortOfResponse
  • SomeSortOfResult
  • SomeSortOfRow
  • SomeSortOfSettings
  • SomeSortOfSpecification
  • SomeSortOfStatus
  • SomeSortOfSummary

注1: 首字母缩略词还是全部大写的单词是否应该作为单词处理,我想这取决于你。检查 Java API ,您会发现一些错误,例如 ZipInputStream / GZIPInputStream 。这两个类在 同一个包 中,命名约定不一致。 HttpURLConnection 也没有显示与首字母缩略词的任何一致性。

注 2: 上面列出的一些名称是从 Richard Dingwall 写的这篇 文章 中借用的(原始文章似乎不再可用,所以 这里是 Web Archive 的缓存副本)。

原文由 cassiomolin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题