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

各位如何看待开发的过程中,变量名或者方法名里的英文单词缩写,比如 query 写成 qry

  •  1
     
  •   AllenHua · 2020-03-26 21:39:21 +08:00 · 7505 次点击
    这是一个创建于 1453 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这样的例子蛮多

    query 写成 qry

    button 写成 btn

    history 写成 his

    service 写成 serv

    parameter 写成 param params

    select 写成 sel (如果写全 selected 使用过去式还能表达出状态信息 一举多得)

    modify 写成 mod

    类似的挺多的,不可否认 大家都很清楚的而且单词长度很长的更推荐简写,(不过这个 「大家都清楚」 界限又不太好确定)

    然而有些单词实在是冷门,却还要简写成两三个字母。接手其他人代码的那个兄弟可能会爆炸,如果他们的编码习惯,命名习惯很不相同……

    这个 topic 似乎也有代码规范制约着,想问问大家的看法?

    88 条回复    2020-03-28 01:18:31 +08:00
    mokeyjay
        1
    mokeyjay  
       2020-03-26 21:43:23 +08:00   ❤️ 1
    我认为:
    能简写的首先应该是常见词,其次是要能够联系上下文消除歧义的
    比如 SubmitButton 简写成 SubmitBtn 我觉得可以

    query 跟 qry 就差俩字母还简写个啥劲儿
    visitant
        2
    visitant  
       2020-03-26 21:46:40 +08:00   ❤️ 2
    param 缩写还有点意义,其他的例子里缩写还不如全写,缩写反而更迷惑了,建议看看《代码大全》如何给变量取名那一章节。
    inhzus
        3
    inhzus  
       2020-03-26 21:48:43 +08:00   ❤️ 7
    我平时一般都会查下通用的缩写 https://www.abbreviations.com/
    当然,最好还要写上注释
    KallyDev
        4
    KallyDev  
       2020-03-26 21:50:02 +08:00 via iPhone
    方法名没有必要缩写。主要是变量名,只要和包名不冲突该怎么写就怎么写。缩写的话,可以选用 service 写为 svc,request 写为 req 这一类之间可识度高的写法。有个网页可以用来参考变量名,直接搜 Codelf
    airyland
        5
    airyland  
       2020-03-26 21:50:06 +08:00
    btn param 可以接受,其他的宁长勿短。
    AllenHua
        6
    AllenHua  
    OP
       2020-03-26 21:50:06 +08:00
    @mokeyjay #1 是的 同意 看到 qry 就难受 规不规范另说 一点也不美观
    AllenHua
        7
    AllenHua  
    OP
       2020-03-26 21:50:48 +08:00
    @visitant #2 谢谢 很好的参考资料
    pomelotea2009
        8
    pomelotea2009  
       2020-03-26 21:51:41 +08:00 via Android
    service 在有前缀单词的情况下,通常不是去掉元音简写成 srv 吗?
    huntcool001
        9
    huntcool001  
       2020-03-26 21:52:00 +08:00
    辨识度高的可以. department -> dept 等. 或者特殊场景,比如说 jwt 里面的很多词就会缩成三个字母,为了节省空间.

    正常代码里这么写我肯定要打人的
    AllenHua
        10
    AllenHua  
    OP
       2020-03-26 21:52:07 +08:00
    @inhzus #3 是的 ok 谢谢
    @KallyDev #4 对 service 写成 svc 谢谢指路
    @airyland #5 感觉很多都是宁长勿短
    Mohanson
        11
    Mohanson  
       2020-03-26 21:52:29 +08:00 via Android
    局部变量统一缩写甚至 a, b, c 代替. 没错,谭浩强命名法拥簇正是在下我。
    superrichman
        12
    superrichman  
       2020-03-26 21:53:01 +08:00 via iPhone
    你说的这几个我会用 btn param mod,其它的都完整写
    ostrichb
        13
    ostrichb  
       2020-03-26 21:53:03 +08:00 via Android
    我一般会用到一些缩写 即使他有歧义 比如说 recommend Requirements -> recReq
    AllenHua
        14
    AllenHua  
    OP
       2020-03-26 21:53:14 +08:00
    @pomelotea2009 #8 老哥说得对 是 srv [捂脸]
    @KallyDev #4
    KallyDev
        15
    KallyDev  
       2020-03-26 21:55:12 +08:00 via iPhone
    @pomelotea2009 server -> srv, service -> svc
    hmzt
        16
    hmzt  
       2020-03-26 21:56:01 +08:00
    @Mohanson hh,我都是 t,tmp,temp
    Pythondr
        17
    Pythondr  
       2020-03-26 22:00:12 +08:00 via iPhone   ❤️ 1
    不要自创弱缩写,为所欲为。应该对自己要求严格一点,无论是工作还是处事
    kaiki
        18
    kaiki  
       2020-03-26 22:02:44 +08:00
    @hmzt 还可以 tmp tmp2 tmp3
    crella
        19
    crella  
       2020-03-26 22:06:17 +08:00 via Android
    干脆用中文命名吧。

    其实我是试过把循环内迭代的变量加上_开头,比如_x,在告诉自己认准这个是循环内的变量。怕循环的代码一长,或者不知道又冒出个 x 出来,就搞混淆了。

    后面发现没什么必要。
    autoxbc
        20
    autoxbc  
       2020-03-26 22:12:44 +08:00
    英文苦手变量命名法

    1. 常用 3000 词里选一个
    2. 保证是同义词里最短的
    3. 不够准确贴切?无所谓
    4. 词性都用错了?无所谓
    skylancer
        21
    skylancer  
       2020-03-26 22:18:32 +08:00
    这没啥好担心的,唯一的问题是,请养成写注释的好习惯
    veike
        22
    veike  
       2020-03-26 22:20:16 +08:00
    我一般都写的特别长
    Rwing
        23
    Rwing  
       2020-03-26 22:23:37 +08:00
    全部不要缩写
    AllenHua
        24
    AllenHua  
    OP
       2020-03-26 23:03:06 +08:00
    @Mohanson #11 你把你狗头丢掉了 🐻dei [滑稽]
    AllenHua
        25
    AllenHua  
    OP
       2020-03-26 23:06:26 +08:00
    @Pythondr #17 我也认为尽量讲究具体 讲究严格严谨
    @crella #19 还是要英文喔
    @autoxbc #20 哥们的序号用法很标准 很规范 好评
    @veike #22 见名知义 最好了
    @Rwing #23 文件体积大了 也要想办法压缩 必要时还是要考虑缩写的
    littleylv
        26
    littleylv  
       2020-03-26 23:08:23 +08:00   ❤️ 1
    通用的常见的缩写完全没问题,写代码的都看得懂吧:
    button btn
    request req
    response res
    parameter param
    temp tmp

    不过 history -> his ????
    strawberryBug
        27
    strawberryBug  
       2020-03-26 23:58:04 +08:00
    @littleylv lol,干脆全部不要缩写
    HENQIGUAI
        28
    HENQIGUAI  
       2020-03-27 00:01:40 +08:00
    多打几个字母会死么?自动补全也并不需要你多打几下啊

    自己造什么玩意缩写,不是业界通用的缩写就老老实实的写全
    hszhakka2ex
        29
    hszhakka2ex  
       2020-03-27 00:03:30 +08:00
    不缩写,易懂,不用猜。
    AllenHua
        30
    AllenHua  
    OP
       2020-03-27 00:04:34 +08:00 via iPad
    @littleylv 我真见过 把 history 写成 his 的代码
    wangyzj
        31
    wangyzj  
       2020-03-27 00:15:52 +08:00
    baobao1270
        32
    baobao1270  
       2020-03-27 00:18:54 +08:00
    param, btn, serv/srv, 可以接受
    我认为应当在团队中设定一个允许的缩写列表,列表之外的都不可以缩写。
    IgniteWhite
        33
    IgniteWhite  
       2020-03-27 00:24:28 +08:00 via iPhone
    很多集成电路的选择线都叫 sel,这个倒是通用
    params 和 arg 一样,类 unix 常见
    mod 这个倒的确应该说清楚
    randyo
        34
    randyo  
       2020-03-27 00:26:26 +08:00 via Android
    手工混淆吗
    hoyixi
        35
    hoyixi  
       2020-03-27 00:26:56 +08:00
    btn param 至少不会引起歧义

    这东西乱写的话,纯粹给自己和团队埋雷,时间长了恐怕就忘了
    hanxiV2EX
        36
    hanxiV2EX  
       2020-03-27 00:27:25 +08:00 via Android
    用拼音挺好的
    ericls
        37
    ericls  
       2020-03-27 00:54:40 +08:00
    bikeshedding
    Felldeadbird
        38
    Felldeadbird  
       2020-03-27 01:09:01 +08:00 via iPhone
    不是所有单词都合适缩写…
    stillsilly
        39
    stillsilly  
       2020-03-27 01:18:49 +08:00
    古代程序员喜欢这么干
    learningman
        40
    learningman  
       2020-03-27 01:20:35 +08:00 via Android
    @ostrichb receive Response (确信)
    msg7086
        41
    msg7086  
       2020-03-27 04:34:57 +08:00 via Android   ❤️ 5
    我们这有人把 authentication 缩写成 auto 的,我都看呆了。
    kaiki
        42
    kaiki  
       2020-03-27 04:45:10 +08:00
    @hanxiV2EX 之后就会出现 00 后的那种 cqy(处 Q 友)等加密通话般的缩写
    areless
        43
    areless  
       2020-03-27 07:55:39 +08:00 via Android
    一行 80 个,局部变量 a 开头的直接 a 了
    hafuhafu
        44
    hafuhafu  
       2020-03-27 07:58:18 +08:00
    有那种通用缩写的就用,其他就只好写最短的全称了,即使最后变量名或者方法名很长,不过幸好有 IDE,除了看着难受一点点,其实也没啥。但是乱用自己编的缩写,过阵子再看就很难受了,特别是有时候还会遇到有类似的...
    April5
        45
    April5  
       2020-03-27 08:33:05 +08:00
    手里维护的一份 C 代码,上下文变量就是 mod,之前还不知道什么意思,看到楼主说的,醍醐灌顶
    sunziren
        46
    sunziren  
       2020-03-27 08:37:02 +08:00
    我们就不一样了,我们一般用拼音的缩写(:doge )
    sunziren
        47
    sunziren  
       2020-03-27 08:37:28 +08:00
    10 秒内能认出来算我输
    jinliming2
        48
    jinliming2  
       2020-03-27 08:47:53 +08:00 via iPhone
    query 不是大部分直接缩写为 q 吗?
    garlics
        49
    garlics  
       2020-03-27 09:01:01 +08:00
    想起以前一个同事把 button 缩写成 but
    AllenHua
        50
    AllenHua  
    OP
       2020-03-27 09:09:53 +08:00
    @baobao1270 #32 那这个列表需要及时更新和时常维护了
    @IgniteWhite #33 对 是的 所以说 这个“通用” 是有点难界定
    @hanxiV2EX #36 不加狗头吗?
    @stillsilly #39 这是在嘲笑远古时期程序员么 hhhh
    @msg7086 #41 八竿子打不着诶 神了
    @kaiki #42 加密通话好评!哈哈哈哈
    @hafuhafu #44 我感觉写全了 其实也不难受 大小写注意了之后 反而看起来很爽(主要还是见名知义的功劳)
    @April5 #45 不用客气
    @sunziren #46 谢谢你的 doge 哈哈
    @jinliming2 #48 一个字母这么狠?乱棍打死好了
    @garlics #49 他英语六级估计没过 [doge]
    AlexHsu
        51
    AlexHsu  
       2020-03-27 09:18:59 +08:00
    看得懂就行吧 前几个还行 sel 和 mod 是什么鬼 真有人这么写吗
    jinliming2
        52
    jinliming2  
       2020-03-27 09:23:06 +08:00 via iPhone
    @AllenHua query 缩写成一个字母 q 很常见啊,谷歌、必应的搜索词参数就是 q,百度的是 word 缩写成 wd……
    yjxjn
        53
    yjxjn  
       2020-03-27 09:24:35 +08:00
    @msg7086 写 auth 怎么看都知道是验证的意思,auto 这特么连意思都改了。。
    zr8657
        54
    zr8657  
       2020-03-27 09:26:33 +08:00
    巨坑,之前看到有人吧 windows 写了个 win,我当时还在想跟冠军有什么关系,问了问才知道是 windows,无语
    guolaopi
        55
    guolaopi  
       2020-03-27 09:26:37 +08:00
    大家都认可的也就没啥了。
    隐约记得 std=>standard,eq=>equals,招谁说理去
    encro
        56
    encro  
       2020-03-27 09:42:18 +08:00
    简写,适用于局部变量,如果用到全局,那么就是坑人。
    局部得时候可以更加简单点

    function(r Request) {

    }

    function(req Request) {

    }

    都是可以的,但是你全局写一个

    Class Req{}

    就要被骂了
    GaoYL
        57
    GaoYL  
       2020-03-27 09:46:16 +08:00
    本人绝对不会这样子做。
    efaun
        58
    efaun  
       2020-03-27 09:59:42 +08:00
    代码提示都已经这么智能了,起个长点的变量名又有何不可,下文引用的时候打两三个字母就出来了
    xsen
        59
    xsen  
       2020-03-27 10:10:37 +08:00
    这算好了,猜猜还是可以猜到的。若遇到用中文首字母缩写——各位是真的可以猜猜意思,恩,还没注释
    silhouette
        60
    silhouette  
       2020-03-27 10:12:19 +08:00 via Android
    conf
    crella
        61
    crella  
       2020-03-27 10:12:43 +08:00 via Android
    resp 才是指 response 吧,res 不是指 resource 吗,好像 windows 有个 uires.dll
    daviswei
        62
    daviswei  
       2020-03-27 10:14:39 +08:00
    @zr8657 win98 、winxp 、win10,好像都习惯了,哈哈
    zealinux
        63
    zealinux  
       2020-03-27 10:38:22 +08:00
    应该会有人简写成 qy
    wdd2007
        64
    wdd2007  
       2020-03-27 10:41:27 +08:00
    哈哈 res 不是 result 么
    rockcat
        65
    rockcat  
       2020-03-27 10:43:51 +08:00
    英文非母语,乱写而已。还是老老实实的写全了吧。
    zcfnc
        66
    zcfnc  
       2020-03-27 10:57:44 +08:00
    自从 python 支持中文了就开始用中文做命名了,虽然看起来怪怪的。。。。
    sdushn
        67
    sdushn  
       2020-03-27 11:02:46 +08:00
    qry 是啥,为啥不直接连 r 也省了,之前也会把 button 写成 btn,现在基本是都写全,多敲几个字母的事
    kisshere
        68
    kisshere  
       2020-03-27 11:23:58 +08:00
    只认识 btn 、param 、mod
    其余都不认识
    Leonard
        69
    Leonard  
       2020-03-27 11:40:09 +08:00
    简写起码直观,有些人英文实在烂,比如现在我接手的代码里之前的人死活不会写 video,一会一个 vedio,一会一个 veido,上次发现个 bug 找了半天,我只看到单词错了,但这种错误放在长方法名或长变量里,得看半天才能分出来原来两个拼写错得不一样。。
    royzhanggy
        70
    royzhanggy  
       2020-03-27 11:53:34 +08:00
    不简写都可能会有误解,还是老老实实写全吧
    tuwulin365
        71
    tuwulin365  
       2020-03-27 12:11:24 +08:00
    @Mohanson 是拥趸啦
    AllenHua
        72
    AllenHua  
    OP
       2020-03-27 13:01:50 +08:00
    @jinliming2 #52 你说的场景 确实常见 但是代码里写 用一个 q 然后后面跟上业务中出现的名词不觉得别扭吗 代码里的逻辑 首推肯定是写全了 简写个🐔儿啊
    @yjxjn #53 也许是 写快了 手滑 #滑稽
    @zr8657 #54 哈哈哈 该贴成为变成故事大会
    @encro #56 是的 有道理
    @crella #61 阔以
    @Leonard #69 这种 真是巨坑了 不好意思 把👨 和大家都逗笑了
    @tuwulin365 #71 乱棍打死 +1
    charlieputon
        73
    charlieputon  
       2020-03-27 13:11:54 +08:00 via Android
    说到这个不得不吐槽一下,程序员真的要英语好一点。否则即使是一些大厂的员工,写的代码也很恶心。例如:把 execute 简写成 ext,看到都想骂人,execute 用脚趾想缩写也只可能是 exec 啊,ext 看到第一眼难道不是 extention 吗。真他妈猪。
    jsjgjbzhang
        74
    jsjgjbzhang  
       2020-03-27 13:44:56 +08:00
    像我用中文命名就不会有这种问题
    crella
        75
    crella  
       2020-03-27 13:46:49 +08:00 via Android
    论到缩写,pecmd 的命令基本都是四字,有参考意义
    raymanr
        76
    raymanr  
       2020-03-27 14:01:00 +08:00
    我这两天看外国友人十年前的机器学习代码... 看得最后受不了把名字都改回全部单词了

    feat -> feature
    vec -> vector
    ent -> entropy

    等等等等...
    atonku
        77
    atonku  
       2020-03-27 14:38:00 +08:00
    我都是把别人的缩写展开,显得写的代码比较多,面向 KPI
    codelegant
        78
    codelegant  
       2020-03-27 14:55:40 +08:00
    用文本编辑器写代码的吗?为什么要使用缩写?自动补全不好吗?除非是像 i18n 这种。
    HankAviator
        79
    HankAviator  
       2020-03-27 15:06:06 +08:00
    @yjxjn Das Auto😂 -"我 Audi 出一倍价格"
    MarkZuckerberg
        80
    MarkZuckerberg  
       2020-03-27 15:57:22 +08:00
    省略元音字母 a e i o u 是常用的缩写手法
    另外一个是把 ks/cs 写成 x

    thx
    thehackercat
        81
    thehackercat  
       2020-03-27 17:27:57 +08:00
    query 写成 qry

    button 写成 btn

    history 写成 hty

    service 写成 svc

    parameter 写成 param

    modify 写成 mod
    yxcxx
        82
    yxcxx  
       2020-03-27 17:37:48 +08:00
    写 rust 就没办法把 modify 缩写成 mod 了
    Tn5ohB1Yecdk3qCK
        83
    Tn5ohB1Yecdk3qCK  
       2020-03-27 17:59:49 +08:00
    @sunziren #46
    拼音缩写的才叫牛逼
    hantsy
        84
    hantsy  
       2020-03-27 18:02:32 +08:00
    btn, param 还可以接受,其它的无法理解。
    shaohan0228
        85
    shaohan0228  
       2020-03-27 18:07:37 +08:00
    query 写成 qry 不用 没见过

    button 写成 btn 用

    history 写成 his 不用 见过

    service 写成 serv 不用 没见过

    parameter 写成 param params 用

    select 写成 sel (如果写全 selected 使用过去式还能表达出状态信息 一举多得)抽风的时候用过

    modify 写成 mod 不用 见过
    jadehare
        86
    jadehare  
       2020-03-27 18:20:09 +08:00
    position => pos ;controller => ctrl 。缩写的一般都是没歧义的吧,我看到这个 history => his 是会懵逼的
    justin2018
        87
    justin2018  
       2020-03-27 19:54:56 +08:00
    还是全名的好 development or develop 写 dev 我可以知道

    button 写 btn 我可以知道 但是其他的 我可能还真不知道 😅

    shenfenzheng 其实是 身份证 但是如果缩写 sfz 那就有很多情况 真不知道你说的是啥子 😅
    WhoMercy
        88
    WhoMercy  
       2020-03-28 01:18:31 +08:00
    起源应该是外国人对常用的单词进行了缩写,学习别人的代码也就把这一套学了过来。

    初看可能会不习惯,但是这种缩写就如同“黑话”,基本上在各个行业都会有一些。

    个人觉得缩写看起来会更简练(优雅),差几个字母可以自动补全是没错,但少流畅感(一眼即可聚焦知义,而不需要扫过全部单词)。

    还有,大部分缩写的地方都是次要的,如 btn 、svc 、dao 、dto 等都是作为后缀描述某一类方法(功能、作用),更重要的是前缀搭配的“描述性文字”,那部分一般不会缩写。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5397 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 07:23 · PVG 15:23 · LAX 00:23 · JFK 03:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.