Java数据传输对象命名约定?
-
19-09-2019 - |
题
考虑到这种情况下,您拥有“转移对象”(与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)