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

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

  •  1
     
  •   AllenHua · 64 天前 · 4796 次点击
    这是一个创建于 64 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这样的例子蛮多

    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   64 天前   ❤️ 1
    我认为:
    能简写的首先应该是常见词,其次是要能够联系上下文消除歧义的
    比如 SubmitButton 简写成 SubmitBtn 我觉得可以

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

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

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

    后面发现没什么必要。
    autoxbc
        20
    autoxbc   63 天前
    英文苦手变量命名法

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

    不过 history -> his ????
    strawberryBug
        27
    strawberryBug   63 天前
    @littleylv lol,干脆全部不要缩写
    HENQIGUAI
        28
    HENQIGUAI   63 天前
    多打几个字母会死么?自动补全也并不需要你多打几下啊

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

    这东西乱写的话,纯粹给自己和团队埋雷,时间长了恐怕就忘了
    hanxiV2EX
        36
    hanxiV2EX   63 天前 via Android
    用拼音挺好的
    ericls
        37
    ericls   63 天前
    bikeshedding
    Felldeadbird
        38
    Felldeadbird   63 天前 via iPhone
    不是所有单词都合适缩写…
    stillsilly
        39
    stillsilly   63 天前
    古代程序员喜欢这么干
    learningman
        40
    learningman   63 天前 via Android
    @ostrichb receive Response (确信)
    msg7086
        41
    msg7086   63 天前 via Android   ❤️ 5
    我们这有人把 authentication 缩写成 auto 的,我都看呆了。
    kaiki
        42
    kaiki   63 天前
    @hanxiV2EX 之后就会出现 00 后的那种 cqy(处 Q 友)等加密通话般的缩写
    areless
        43
    areless   63 天前 via Android
    一行 80 个,局部变量 a 开头的直接 a 了
    hafuhafu
        44
    hafuhafu   63 天前
    有那种通用缩写的就用,其他就只好写最短的全称了,即使最后变量名或者方法名很长,不过幸好有 IDE,除了看着难受一点点,其实也没啥。但是乱用自己编的缩写,过阵子再看就很难受了,特别是有时候还会遇到有类似的...
    April5
        45
    April5   63 天前
    手里维护的一份 C 代码,上下文变量就是 mod,之前还不知道什么意思,看到楼主说的,醍醐灌顶
    sunziren
        46
    sunziren   63 天前
    我们就不一样了,我们一般用拼音的缩写(:doge )
    sunziren
        47
    sunziren   63 天前
    10 秒内能认出来算我输
    jinliming2
        48
    jinliming2   63 天前 via iPhone
    query 不是大部分直接缩写为 q 吗?
    garlics
        49
    garlics   63 天前
    想起以前一个同事把 button 缩写成 but
    AllenHua
        50
    AllenHua   63 天前
    @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   63 天前
    看得懂就行吧 前几个还行 sel 和 mod 是什么鬼 真有人这么写吗
    jinliming2
        52
    jinliming2   63 天前 via iPhone
    @AllenHua query 缩写成一个字母 q 很常见啊,谷歌、必应的搜索词参数就是 q,百度的是 word 缩写成 wd……
    yjxjn
        53
    yjxjn   63 天前
    @msg7086 写 auth 怎么看都知道是验证的意思,auto 这特么连意思都改了。。
    zr8657
        54
    zr8657   63 天前
    巨坑,之前看到有人吧 windows 写了个 win,我当时还在想跟冠军有什么关系,问了问才知道是 windows,无语
    guolaopi
        55
    guolaopi   63 天前
    大家都认可的也就没啥了。
    隐约记得 std=>standard,eq=>equals,招谁说理去
    encro
        56
    encro   63 天前
    简写,适用于局部变量,如果用到全局,那么就是坑人。
    局部得时候可以更加简单点

    function(r Request) {

    }

    function(req Request) {

    }

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

    Class Req{}

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

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

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

    thx
    thehackercat
        81
    thehackercat   63 天前
    query 写成 qry

    button 写成 btn

    history 写成 hty

    service 写成 svc

    parameter 写成 param

    modify 写成 mod
    yxcxx
        82
    yxcxx   63 天前
    写 rust 就没办法把 modify 缩写成 mod 了
    Tn5ohB1Yecdk3qCK
        83
    Tn5ohB1Yecdk3qCK   63 天前
    @sunziren #46
    拼音缩写的才叫牛逼
    hantsy
        84
    hantsy   63 天前
    btn, param 还可以接受,其它的无法理解。
    shaohan0228
        85
    shaohan0228   63 天前
    query 写成 qry 不用 没见过

    button 写成 btn 用

    history 写成 his 不用 见过

    service 写成 serv 不用 没见过

    parameter 写成 param params 用

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

    modify 写成 mod 不用 见过
    jadehare
        86
    jadehare   63 天前
    position => pos ;controller => ctrl 。缩写的一般都是没歧义的吧,我看到这个 history => his 是会懵逼的
    justin2018
        87
    justin2018   63 天前
    还是全名的好 development or develop 写 dev 我可以知道

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

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

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

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

    还有,大部分缩写的地方都是次要的,如 btn 、svc 、dao 、dto 等都是作为后缀描述某一类方法(功能、作用),更重要的是前缀搭配的“描述性文字”,那部分一般不会缩写。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3066 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 14:04 · PVG 22:04 · LAX 07:04 · JFK 10:04
    ♥ Do have faith in what you're doing.