V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
7911364440
V2EX  ›  Java

类似 dto、vo、bo 这些类的命名后缀是大写还是驼峰?比如: UserDto 或者 UserDTO?

  •  
  •   7911364440 · 2022-01-13 09:20:09 +08:00 · 8959 次点击
    这是一个创建于 826 天前的主题,其中的信息可能已经有所发展或是发生改变。
    56 条回复    2022-03-31 08:00:05 +08:00
    damai0419
        1
    damai0419  
       2022-01-13 09:22:00 +08:00
    个人习惯大写
    janxin
        2
    janxin  
       2022-01-13 09:22:58 +08:00 via iPhone
    缩写一般大写
    zydxn
        3
    zydxn  
       2022-01-13 09:27:17 +08:00   ❤️ 4
    dto 本来就是 data transfer object 的缩写了,肯定是全大写 DTO 啊...
    acthtml
        4
    acthtml  
       2022-01-13 09:28:22 +08:00
    统一即可,两种写法在多个开源项目中都看到过。
    CodeCodeStudy
        5
    CodeCodeStudy  
       2022-01-13 09:40:31 +08:00
    建议驼峰 UserDto ,把 DTO 当做一个单词看待。
    如果用下划线的写法,那么应该是 user_dto ,可以看出 dto 是一个整体。
    如果是 UserDTO ,那么转换成下划线形式的时候容易出问题。
    supuwoerc
        6
    supuwoerc  
       2022-01-13 09:50:27 +08:00
    看项目规范吧,大家统一起来就行。
    wxw752
        7
    wxw752  
       2022-01-13 09:54:15 +08:00
    DTO 大写
    Kimen
        8
    Kimen  
       2022-01-13 10:01:42 +08:00
    我看到的一般都是大写,不知道是不是规范,但是比较统一
    CodeCodeStudy
        9
    CodeCodeStudy  
       2022-01-13 10:01:57 +08:00
    标准库的 java.net 的 HttpURLConnection 类就是混用的,HTTP 用了驼峰,URL 用了大写
    imesrdfi8dzs
        10
    imesrdfi8dzs  
       2022-01-13 10:02:59 +08:00
    重要的是统一 不过我和 5l 一样 把它当做一个词去看待 所以就 Dto 这样写了
    billly
        11
    billly  
       2022-01-13 10:04:48 +08:00
    我也是 Dto ,不然总会有提示要改成驼峰,不知道是哪个插件的
    yiqunz
        12
    yiqunz  
       2022-01-13 10:04:56 +08:00   ❤️ 2
    阿里的规范,但是我们项目是 Dto
    [强制] 类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。 正例:ForceCode / UserDO / HtmlDTO / XmlService / TcpUdpDeal / TaPromotion 反例:forcecode / UserDo / HTMLDto / XMLService / TCPUDPDeal / TAPromotion
    yiqunz
        13
    yiqunz  
       2022-01-13 10:06:07 +08:00
    @CodeCodeStudy HTTPURLConnection 看着头疼
    Chase2E
        15
    Chase2E  
       2022-01-13 10:38:52 +08:00
    把驼峰法的 UpperLetter 理解成下划线法的_就好了.
    所以是 UserId, UserDto
    GTim
        16
    GTim  
       2022-01-13 11:19:40 +08:00
    把 Dto 看成一个单词,UserDto

    受不了 DTO 全大写
    makelove
        17
    makelove  
       2022-01-13 11:30:57 +08:00   ❤️ 2
    这种东西建议用无脑方式,不管是不是缩写的单词全部不要大写,减少这方面用脑支出,否则碰到 Id, Db ,Html 之类的都要纠结一下
    EastLord
        18
    EastLord  
       2022-01-13 11:32:53 +08:00
    大写
    fantastM
        19
    fantastM  
       2022-01-13 11:33:37 +08:00   ❤️ 2
    谷歌 Java 风格里对驼峰写法的建议是 Dto ,另外 iOS 应该写作 Ios 、IPv6 应该写作 Ipv6

    https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
    TomVista
        20
    TomVista  
       2022-01-13 11:35:50 +08:00
    我习惯 UserDto , 大写单词一眼看不懂,需要反应反应
    wenbingkun
        21
    wenbingkun  
       2022-01-13 11:53:16 +08:00
    阿里开发规范是大写
    CodeCodeStudy
        22
    CodeCodeStudy  
       2022-01-13 12:05:08 +08:00
    @yiqunz #13 是啊,所以我觉得还是用驼峰的好,如果用大写的话,万一碰到多个缩写,全都是大写字母就很难看了
    zorui
        23
    zorui  
       2022-01-13 12:18:41 +08:00
    **DTO **VO **BO 感觉好丑, 最好是能有一些名词代替。 订单这种 可以用 bill (账单 代替 OrderDTO) invoice (票据
    OrderVO)
    sunny2580839896
        24
    sunny2580839896  
       2022-01-13 13:25:12 +08:00
    user_id userId userID ?
    eronekogin
        25
    eronekogin  
       2022-01-13 13:51:44 +08:00   ❤️ 1
    觉得不妥可以写全嘛,userDataTransferObject
    Buges
        26
    Buges  
       2022-01-13 13:55:02 +08:00 via Android
    建议和下划线的写法相对应,这样能够完全统一下来,并且一些自动转换能得到正确的结果。
    Goooler
        27
    Goooler  
       2022-01-13 14:09:19 +08:00
    都可以,Dto 可以的
    wolfie
        28
    wolfie  
       2022-01-13 14:12:09 +08:00
    新项目大写。
    现有项目 跟着项目风格。
    wolfie
        29
    wolfie  
       2022-01-13 14:14:39 +08:00
    @CodeCodeStudy #5
    谁字段名起 xxx_dto ,这东西只是一个特殊的传输对象,json key 也不会用 xxx_dto 。
    chengyiqun
        30
    chengyiqun  
       2022-01-13 14:15:00 +08:00
    无所谓, 统一即可
    karloku
        31
    karloku  
       2022-01-13 14:18:35 +08:00
    都可以, DTO 看起来帅一点也更符合本身单词的逻辑, 但是对自动转换驼峰和蛇形的反射器不太友好. 取舍以后保持一致就行.
    satoru
        32
    satoru  
       2022-01-13 14:40:23 +08:00
    我们这边设置了强制用 Dto 这种风格 ……
    zongren
        33
    zongren  
       2022-01-13 14:48:28 +08:00
    我们的规范事缩写也作为普通单词
    MajestySolor
        34
    MajestySolor  
       2022-01-13 15:02:18 +08:00
    最朴素的直觉,全部大写很丑
    CodeCodeStudy
        35
    CodeCodeStudy  
       2022-01-13 15:15:06 +08:00
    @wolfie #29 我不是指 DTO 这种东西,而是说要把缩略词当做一个单词看待
    qingshuang
        36
    qingshuang  
       2022-01-13 15:15:17 +08:00
    公司里的 sonar 检查 DTO 这种会报错。。
    Cielsky
        37
    Cielsky  
       2022-01-13 15:23:01 +08:00 via Android
    看自己的情况。
    全大写对我来说更符合直觉,能一眼分辨出是三个单词的缩写
    zachlhb
        38
    zachlhb  
       2022-01-13 15:55:31 +08:00
    我很好奇这些名字谁起的,完全不习惯这种起名
    qiuqingxin
        39
    qiuqingxin  
       2022-01-13 16:05:18 +08:00
    习惯了 DTO
    shanghai1943
        40
    shanghai1943  
       2022-01-13 16:19:28 +08:00
    习惯小写。。当做普通名词来看待吧。我觉得大写相对小写来说,没有那么直观。虽然影响是不大。
    chtcrack
        41
    chtcrack  
       2022-01-13 16:34:31 +08:00
    我都乱来,哪怕你函数名叫 A 也没关系,但是函数和关键地方注释一定要有..
    superchijinpeng
        42
    superchijinpeng  
       2022-01-13 16:36:24 +08:00
    都可以
    hailiang88
        43
    hailiang88  
       2022-01-13 16:55:43 +08:00
    这些都是正常写法,我们所有的命名全是中文拼音第一个字母,变量,方法,类,包,文件,文件夹,数据库字段,已经吐槽了很久了,现在想想很可能是涉密原因吧。
    dcsuibian
        44
    dcsuibian  
       2022-01-13 16:55:48 +08:00
    我之前也纠结过,现在认为针对这种缩写形式,可能看成一个单词更好。
    参考 Url ( Uniform Resource Locator )、Id ( Identity )、Http ( Hyper Text Transfer Prtcl ),虽然是缩写,但含义已经极其明确,你全大写和首字母大写都可以。
    个人感觉 Dto 、Vo 、Bo 的形式比较合理。(在一定上下文环境中省略前缀后)变量就是 dto 、vo 、bo (这里要特别吐槽一下阿里的 DO ,如果全小写会变成关键字 do ,所以我用对应的 PO ),要不然变量叫 dTO 、vO 、bO ,总感觉怪怪的。
    写到这里,回去看了一下自己的项目,发现目前用的是 UserVO 这种写法,一般对应的变量直接叫 vo ,如果多个 VO 同时出现,那么会写成 userVo ,感觉也挺舒服。。。
    hun2008hun
        45
    hun2008hun  
       2022-01-13 18:23:39 +08:00
    都可以,看该项目规范,要统一
    lux182
        46
    lux182  
       2022-01-13 19:16:50 +08:00
    新项目还用这些东西命名吗,太丑陋了
    Wuuuu
        47
    Wuuuu  
       2022-01-13 20:22:20 +08:00
    我记得.net 的规范是 小于等于 3 个字符,全大写,例如 DTO ,VO ,大于 3 个字符就驼峰,例如:Http ; GO 的规范是全驼峰。
    shayuvpn0001
        48
    shayuvpn0001  
       2022-01-13 22:23:41 +08:00
    @eronekogin #25 标准库的 java.net 的 HttpURLConnection 类应该改成 hyperTextTransferProtocolUniformResourceLocatorConnection
    railgun
        50
    railgun  
       2022-01-13 23:01:48 +08:00
    我习惯全驼峰,这样命名函数的时候看着没那么累。比如 ConvertDTOToItem ,就会容易看成 DTOT
    est
        51
    est  
       2022-01-13 23:39:19 +08:00
    所以从这一点来看,还是下划线比较好。
    jim9606
        52
    jim9606  
       2022-01-14 00:06:16 +08:00
    一般将缩写当普通单词比较普适,也就是 HttpClient 。
    考虑在 golang 里的命名规范,首字母大小写区分公私有成员,私有成员 httpClient ,公有成员 HttpClient ,如果全大写就会搞出 hTTPClient 这样不伦不类的命名。
    zpf124
        53
    zpf124  
       2022-01-14 00:08:39 +08:00   ❤️ 1
    就是一个标准统一就好,我个人更喜欢驼峰。
    虽然阿里巴巴的标准是全大写,并且目前我们项目领导也要求这样,我也遵守了这样的规范。

    DTO 和 HTTP 、URL 、SQL 、NBA 、NASA 、API 、GUI 、REST 一样都是一类专有名词缩写,针对于驼峰命名法而言,我的理解是按照驼峰结构修改,和普通单词一样,按照驼峰方式拼写。
    QueryUrl 、UpdateSql 、NbaList 、FakeApi 、Rest 、UserDto 、UserVo 。

    而 DTO 、VO 、DAO 这类东西和前面其他专有名词缩写有一点不一样的地方在于它在名字中是存在特定编程含义的,而其他专有名词在技术层面没有任何意义。
    NbaList 、CnCity 、这类缩写对于某个新加入项目的人而言与 AList 、BObject 并无区别理解代码改造代码的时候无需了解这个缩写的含义; DTO 和 VO 你看到他们的时候你就知道这个类的用途。

    所以我可以理解为什么有人认为该保持全大写,但我个人更倾向于统一用驼峰,不能因为它表达的含义不同就专门例外。
    zxjunz
        54
    zxjunz  
       2022-01-14 11:41:49 +08:00
    起码谷歌工程师都是用驼峰的,比如安卓中有个 DnsResolver
    eronekogin
        55
    eronekogin  
       2022-01-17 10:55:42 +08:00
    @shayuvpn0001 对啊,这不是 java 特色之一么,超过 50 个字符长度的类名不是分分钟 XD
    wxyrrcj
        56
    wxyrrcj  
       2022-03-31 08:00:05 +08:00 via Android
    整个项目统一就行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   959 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:19 · PVG 05:19 · LAX 14:19 · JFK 17:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.