当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Java数据传输对象命名约定?》经验,为你挑选了3个好方法。

在这种情况下,您有一个客户端库传递给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.它们在不同的包装中,但我认为使用相同的名称令人困惑.有关如何命名传输对象的最佳实践吗?



1> cassiomolin..:

D ata T ransfer O bject类应遵循 Java语言规范中定义的名称约定:

类类型的名称应该是描述性名词或名词短语,而不是过长,混合大小写的每个单词的第一个字母.

ClassLoader
SecurityManager
Thread
Dictionary
BufferedInputStream

[...]


后面添加一个类名DTODTO是不是真的有意义的,并没有告诉太多关于类本身.考虑使用描述类的目的的名称.

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

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 的缓存副本).


“没有真正的意义,也没有对类本身进行太多介绍”,它准确地描述了类的目的是数据传输。Car类是现实世界中的实体,应包含行为和业务约束。CarDto类是包含要传输的数据的类。特别是当DTO这个术语广为人知时,看到CarDto的人将确切地知道它是什么,而不是看到两个Car类。

2> IaCoder..:

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


我会避免在DTO中使用大写字母 - 如果在类名中使用缩写,则会使其可读性降低.这就是我更喜欢"CarDto"的原因.
当我有多个相同类别的DTO时,情况怎么样?

3> Jim Barrows..:

添加DTO或DAO或其他任何东西都会违反DRY.FQN非常好,特别是如果它们真的是一样的话.


添加任何内容都会使得在原始实体,DTO对象,缓存对象,NoSQL对象,所有命名相同,只是在不同的包中时,在IDE中找到正确的对象要困难得多.
清晰度也是一个重要的考虑因素.干很重要但不是不可侵犯的.当其他考虑因素变得同等或更重要时,我们遵循的大多数原则都会受到侵犯.对DRY迂腐可能会导致代码中出现难闻的气味.
我不同意..除了我发现代码混淆以相同的名称阅读。您可以指定使用客户端API的FQN,但这也有些麻烦。
FQN是并且不应该在代码中使用.啧.
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有