V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ryougifujino
V2EX  ›  程序员

关于变量从一个命名规则转换到另一个后,采取不同的标准大家怎么看?

  •  
  •   ryougifujino ·
    ryougifujino · 2021-12-06 17:43:56 +08:00 · 1736 次点击
    这是一个创建于 1117 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如WeChat这个单词,有这么一个方法getWeChatID,camelCase 下大家都会这么命名,但是到 snake_case 和 kebab-case 下很多人就会命名为get_wechat_idget-wechat-id,严格按照标准来转换的话应该是get_we_chat_idget-we-chat-id

    再举一个更实际的例子,在 Vue 的源码中,定义类型的时候写成的是VNode,但是写成一个局部变量就写成了vnode,而不是vNode

    这对强迫症来说真的很难受,感觉就是怎么看着舒服怎么来,那么大家有没有什么更合理的解释呢?

    11 条回复    2021-12-07 13:12:40 +08:00
    yuezk
        1
    yuezk  
       2021-12-06 18:06:13 +08:00
    怎么说呢,个人感觉规则是用来规范绝大多数的命名,一个规则没有办法覆盖所有的情况,尤其是像变量命名这种没有绝对对错的东西。至于 `vNode` 和 `vnode`,个人感觉两者都可以的,可以灵活使用,关键是要统一,一个项目中不能一会用 `vnode`,一会儿用 `VNode`。

    如果有强迫症的话,换个角度想,尽力保证命名的一致性才是最终目的,有没有好点。
    karloku
        2
    karloku  
       2021-12-06 18:39:27 +08:00   ❤️ 1
    驼峰蛇形的拼写并不是刻板的按照大写转小写加下划线, 而是要看里面每个部分的单词本身.

    WeChat 本身是一个词, 所以小写的时候也不会拆开. get WeChat ID -> getWeChatID -> get_wechat_id

    套规则的时候还是得先看里面单独的单词是什么, 然后再拼接起来.
    yuezk
        3
    yuezk  
       2021-12-06 19:16:30 +08:00 via iPhone
    另一种解释是把 vnode 当作一个专有名词,对应的大写版本就是 VNode ,不能把它拆成 V 和 Node ,所以驼峰命名的时候使用它的小写版本 vnode 。类似的单词还有 cmake 和 CMake
    yulon
        4
    yulon  
       2021-12-06 19:33:44 +08:00
    驼峰都有两种,一种 getURL ,专有名词里大写的也全部大写,一种 getUrl ,只大写第一个字母。

    既然你口语里是 URL 而不是 U R L ,那也没必要写成 u_r_l 。

    这些写法都是代替空格,而不是增加空格。
    pursuer
        5
    pursuer  
       2021-12-06 20:11:36 +08:00
    只要能看懂,命名比较随意,不是很在意。因为修改命名是有成本和风险的,但收益却很低。我的习惯是尽可能前向兼容。
    eason1874
        6
    eason1874  
       2021-12-06 22:12:00 +08:00
    snake_case 是把句子的大写字母换小写,空格换下划线

    wechat 是名词,本身中间就是没空格的,所以 get_wechat_id 才是符合标准的
    thinkershare
        7
    thinkershare  
       2021-12-06 22:18:54 +08:00
    这个问题已经争论了无数次, 没有什么是好的或者坏的, 保持一致性最重要, 我记得<<.NET 设计规范>>有一章节专门讨论过这个问题, 结论是: 一致性最重要
    aguesuka
        8
    aguesuka  
       2021-12-06 23:24:43 +08:00
    LaTeXAsTeX
    xiaojun1994
        9
    xiaojun1994  
       2021-12-07 09:41:10 +08:00
    这种呢,innerHTML ,innerHtml ,HttpClient ,HTTPClient
    littleshy
        10
    littleshy  
       2021-12-07 11:26:38 +08:00
    多看看所用框架的规范,照着来就好了。
    2i2Re2PLMaDnghL
        11
    2i2Re2PLMaDnghL  
       2021-12-07 13:12:40 +08:00
    严格按照标准来转换的话应该是 get_we_chat_i_d 和 get-we-chat-i-d
    inflection 库是这么说的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2681 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:44 · PVG 13:44 · LAX 21:44 · JFK 00:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.