在这种情况下,您有一个客户端库传递给API的"传输对象"(POJO只有getter/setter),命名传输对象的最佳方法是什么?
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
.它们在不同的包装中,但我认为使用相同的名称令人困惑.有关如何命名传输对象的最佳实践吗?
D ata T ransfer O bject类应遵循 Java语言规范中定义的名称约定:
类类型的名称应该是描述性名词或名词短语,而不是过长,混合大小写的每个单词的第一个字母.
ClassLoader SecurityManager Thread Dictionary BufferedInputStream
[...]
后面添加一个类名DTO或DTO是不是真的有意义的,并没有告诉太多关于类本身.考虑使用描述类的目的的名称.
以下是您可以使用的名称建议的非详尽列表:
SomeSortOf 命令
SomeSortOf 配置
SomeSortOf 凭证
SomeSortOf 详细信息
SomeSortOf 元素
SomeSortOf 事件
SomeSortOf Header
SomeSortOf 输入
SomeSortOf 指令
SomeSortOf 项目
SomeSortOf 消息
SomeSortOf 元数据
SomeSortOf 操作
SomeSortOf 输出
SomeSortOf Payload
SomeSortOf QueryParameter
SomeSortOf QueryResult
SomeSortOf Representation
SomeSortOf 请求
SomeSortOf 响应
SomeSortOf 结果
SomeSortOf Row
SomeSortOf 设置
SomeSortOf 规范
SomeSortOf 状态
SomeSortOf 摘要
SomeSortOf 查看
注1:首字母缩略词或所有大写单词是否应作为单词处理,我想这取决于你.检查Java API,你会发现一些像ZipInputStream
/的绊脚石GZIPInputStream
.两个类都在同一个包中,名称约定不一致.HttpURLConnection
也没有显示与首字母缩略词的任何一致性.
注2:上面列出的一些名字是从Richard Dingwall撰写的这篇文章中借来的(原始文章似乎已经不再可用,所以这里是来自Web Archive 的缓存副本).
我通常将"DTO"添加到类名的末尾,并将所有DTO放在他们自己的包中.在您的示例中,我将其称为com.x.core.dto.CarDTO.
添加DTO或DAO或其他任何东西都会违反DRY.FQN非常好,特别是如果它们真的是一样的话.