考虑到这种情况下,您拥有“转移对象”(与getters/setter的POJO对象),由客户端库传递给您的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. 。它们的包裹处于不同的包裹中,但我认为拥有相同名称是令人困惑的。如何命名传输对象有最佳练习吗?

有帮助吗?

解决方案

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

其他提示

dATA t抢劫 o受体 课程应遵循 名称惯例 定义在 Java语言规范:

类型的名称应为描述性名词或名词短语,而不是过于长的名词,在混合情况下,每个单词大写的第一个字母。

ClassLoader
SecurityManager
Thread
Dictionary
BufferedInputStream

[...]


用班级名称和 DTO 或者 DTO 并不是真正有意义的,也不是关于课程本身的太多。考虑使用描述的名称 目的 你的课。

这是您可以使用的名称建议的非排量清单:

  • 某一些命令
  • 某一些配置
  • 某一些证书
  • 某一些细节
  • 某一些元素
  • 某一些事件
  • 某一些标题
  • 某一些输入
  • 某一些操作说明
  • 某一些物品
  • 某一些信息
  • 某一些元数据
  • 某一些手术
  • 某一些输出
  • 某一些有效载荷
  • 某一些投影
  • 某一些Queryparameter
  • 某一些查询
  • 某一些表示
  • 某一些要求
  • 某一些资源
  • 某一些回复
  • 某一些结果
  • 某一些
  • 某一些设置
  • 某一些规格
  • 某一些地位
  • 某一些概括

注1: 无论是否应将缩写词或所有大写字母处理为单词,我想这取决于您。检查 Java API 您会发现一些偶然 ZipInputStream / GZIPInputStream. 。这两个课程都在 相同的包裹 名称惯例不一致。 HttpURLConnection 也不显示与首字母缩写的任何一致性。

笔记2: 上面列出的一些名称是从中借来的 文章 写的 理查德·丁沃尔(Richard Dingwall) (原始文章似乎不再可用,所以 这是一个缓存的副本 来自Web存档)。

添加DTO或DAO或其他任何东西都会违反干燥。 FQN非常好,尤其是如果它们确实是同一件事。

我认为表现出这种行为的课程没有最好的做法或惯例。我个人不喜欢任何类名称中的对象。您可以使用一些资格,例如poko.car,也可以使用一些命名惯例,例如汽车(POJO)Carda(用于数据访问)Carbiz(用于商业领域类)

或者,如果您不介意类名称中的“对象”一词,则可以使用CardTo(汽车数据传输对象)

在您使用的其他代码约定中使用适合的约定。我个人使用后缀“将”(例如,与客户域类关联的数据传输对象命名为CustomerTo)。包装结构也应传达每种类型的类别(so.foo.domain.customer和so.foo.transport.customerto)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top