V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lowsell
V2EX  ›  问与答

getUserId 还是 getUserID?

  •  
  •   lowsell · 2023-01-22 13:10:47 +08:00 · 4957 次点击
    这是一个创建于 672 天前的主题,其中的信息可能已经有所发展或是发生改变。
    类似的 getXxxURL 还是 getXxxUrl
    不确定应该用哪种,大家呢
    41 条回复    2023-01-24 00:07:14 +08:00
    nexo
        1
    nexo  
       2023-01-22 13:13:15 +08:00 via Android   ❤️ 1
    ID URL
    pdog18
        2
    pdog18  
       2023-01-22 13:14:39 +08:00
    似乎 ID 是合理的
    iseki
        3
    iseki  
       2023-01-22 13:17:13 +08:00 via Android   ❤️ 2
    少于三个字母我选 ID ,三个字母开始我宁可 Url
    SuperMild
        4
    SuperMild  
       2023-01-22 13:19:22 +08:00   ❤️ 3
    最标准的是 Id ,URL ,但实际操作没必要太计较。
    pupboss
        5
    pupboss  
       2023-01-22 13:22:55 +08:00   ❤️ 2
    Id 是一个单词 identity 的缩写,url 是 uniform resource locator 缩写,4 楼说的就是标准答案了
    hahadaxigua834
        6
    hahadaxigua834  
       2023-01-22 13:28:16 +08:00   ❤️ 6
    Words in names that are initialisms or acronyms (e.g., URL and NATO) should have the same case. URL should appear as URL or url (as in urlPony, or URLPony), never as Url. This also applies to ID when it is short for “identifier”; write appID instead of appId.

    https://google.github.io/styleguide/go/decisions#variable-names
    hst001
        7
    hst001  
       2023-01-22 13:37:57 +08:00
    ID 和 URL 都是缩写,通常情况下要么全大写要么全小写
    gowl
        8
    gowl  
       2023-01-22 13:49:49 +08:00
    按微软的命名规则的话是 ID 和 Url 。
    SuperMild
        9
    SuperMild  
       2023-01-22 14:42:37 +08:00
    @hahadaxigua834 这个竟然是 Google 的 Go 语言风格,与 Go 自己的标准库不一样啊。

    比如 https://pkg.go.dev/database/sql#Result 用了 LastInsertId()

    以及这里 https://pkg.go.dev/os/user 用了 UnknownUserIdError 和 LookupId() 等
    HAWCat
        11
    HAWCat  
       2023-01-22 16:27:58 +08:00 via iPhone
    自己统一了就行,各家都不一样的
    securityCoding
        12
    securityCoding  
       2023-01-22 18:06:10 +08:00 via Android
    golanglint-ci 规则强制 ID
    duke807
        13
    duke807  
       2023-01-22 18:56:39 +08:00 via Android
    get_usr_id()
    get_xxx_url()
    sifeizhai2020
        14
    sifeizhai2020  
       2023-01-22 18:57:52 +08:00
    Now lowercase everything (including acronyms), then uppercase only the first character of:
    - ... each word, to yield upper camel case, or
    - ... each word except the first, to yield lower camel case

    https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
    Jooooooooo
        15
    Jooooooooo  
       2023-01-22 19:31:02 +08:00
    ID 是 go 的风格, 写 java 的从来都是 Id
    snw
        16
    snw  
       2023-01-22 19:34:38 +08:00 via Android   ❤️ 1
    我选 getUserId 和 getXxxUrl. 对于这种很常见的缩写单词,就当它普通单词对待,不然有时出现在函数名中间时维持同样的原则非常难受:getIDAsync, getURLList
    lowsell
        17
    lowsell  
    OP
       2023-01-22 20:08:25 +08:00
    @snw 确实有遇到这个场景,很是别扭
    Knowazz
        18
    Knowazz  
       2023-01-22 20:17:58 +08:00
    感觉后者比较顺眼
    leonshaw
        19
    leonshaw  
       2023-01-22 20:20:14 +08:00
    @snw 两个缩写连着更难受
    qeqv
        20
    qeqv  
       2023-01-22 21:19:10 +08:00
    这个问题也是困扰过我,现在我选择 Id Url
    olaloong
        21
    olaloong  
       2023-01-22 21:29:17 +08:00 via Android
    我们的傻瓜 checkstyle 定死了不允许连续出现两个大写字母,so...
    makelove
        22
    makelove  
       2023-01-22 21:50:10 +08:00
    建议无脑算法,永远只大写第一个
    Mbb38C3HtyZydTt7
        23
    Mbb38C3HtyZydTt7  
       2023-01-22 22:03:37 +08:00
    get_user_id
    ChefIsAwesome
        24
    ChefIsAwesome  
       2023-01-22 22:49:38 +08:00
    按语法,缩写应该大写。但是现实中,很多不大写的情况。
    以 url 举例,path 分大小写,协议和域名不分大小写。HTTPS://v2ex.COM 这地址你看着怪不怪。FBI 应该是全大写。FBI 的网址,只能是全小写的 fbi.gov
    再例如,km/h 都是小写。
    写驼峰,就别管缩写大写的问题。
    WasteNya
        25
    WasteNya  
       2023-01-23 04:10:08 +08:00 via Android   ❤️ 4
    gEtUsErId
    caixiangyu17
        26
    caixiangyu17  
       2023-01-23 08:46:20 +08:00
    主要命名的话,还是 Id, Url 比较舒服
    看到两个大写字母挨着的变量名难受
    aoeui
        27
    aoeui  
       2023-01-23 09:19:58 +08:00 via Android   ❤️ 1
    @gowl 别的语言不知道,按照 C# 的规则应该是 Id 和 Url
    Rocketer
        28
    Rocketer  
       2023-01-23 09:48:53 +08:00 via iPhone
    之前遇到过一个前端问题,我们写的程序( js )是驼峰式命名,但框架映射到 html 和 css 时会使用下划线式的命名。

    具体细节记不清了,但反正它每遇到一个大写字母,就会转成下划线加小写的形式,比如我写 imageURL ,它实际操作的是 html 里 image_u_r_l 这个属性,所以要求我们必须用 imageUrl 这样的命名,才能操作到预期的 image_url 这个属性。

    这个框架还是微软出的,所以我觉得为了保证各种命名规则的可转换性,还是应该用 getId ,getUrl
    popil1987
        29
    popil1987  
       2023-01-23 10:08:46 +08:00
    ID 的情况还和 URL 不一样,ID 是一个单词的缩写,似乎 getId 比较合适。URL 是三个单词的缩写,似乎 getURL 比较合适
    jjshare123
        30
    jjshare123  
       2023-01-23 10:23:11 +08:00
    驼峰和下划线互转的话,是:大写字母 = 下划线+小写

    getID get_i_d
    getURL get_u_r_l

    你再看看,就知道怎么抉择
    tairan2006
        31
    tairan2006  
       2023-01-23 11:17:41 +08:00
    golang 是 ID ,java 就 Id ,习惯就好
    zealinux
        32
    zealinux  
       2023-01-23 12:08:46 +08:00
    get_user_id
    get_xxx_url

    清清爽爽,没有你的烦恼
    gowl
        33
    gowl  
       2023-01-23 13:35:53 +08:00
    > 按照 C# 的规则应该是 Id 和 Url

    是的,谢谢:)
    @aoeui
    gowl
        34
    gowl  
       2023-01-23 13:38:59 +08:00
    纠正:

    > 按微软的命名规则的话是 ID 和 Url 。

    应为:

    按微软的命名规则的话是 Id 和 Url 。
    gowl
        35
    gowl  
       2023-01-23 13:42:15 +08:00
    Id 是 Id 不是 ID ;但 IO 是 IO 而不是 Io ,区别在于 Id 是「一个词的缩略形式」,而 IO 是「首字母缩略词」。
    leonshaw
        36
    leonshaw  
       2023-01-23 13:58:49 +08:00
    维基百科 identifier 上缩写都是 ID ,没看到 Id
    Pastsong
        37
    Pastsong  
       2023-01-23 15:32:20 +08:00 via Android
    getUrlForIosAppId
    mejee
        38
    mejee  
       2023-01-23 15:37:52 +08:00
    怎么舒服怎么来,别人看得清晰比较重要,我选择 Id ,Url
    2NUT
        39
    2NUT  
       2023-01-23 17:46:41 +08:00
    魔怔了
    snw
        40
    snw  
       2023-01-23 18:49:20 +08:00 via Android
    我认为为了可读性和统一性,适当牺牲语法上的正确性是完全值得的,只要大家看得懂。毕竟我们是命名函数名和变量,不是参加英语考试。

    举个 PowerPivot 的例子:我的销售数据表里有 order 列和 sale 列,显然 sale 从语义上来说是错误的,应该是 sales 。但为了不和度量重名冲突,所以列名用单数形式,度量用复数形式,比如
    Sales:=SUM(data[sale])

    微软官方示例用不同词组也是可以的,就是比较啰嗦:
    Total Sales:=SUM(Sales[SalesAmount])
    WilliamLin
        41
    WilliamLin  
       2023-01-24 00:07:14 +08:00 via iPhone
    我用 Id Url ,不想按英语规则来,全部弄简单化,例如 children 直接写成 childlist ,对接方便
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   995 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.