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

2021-12-06 17:43:56 +08:00
 ryougifujino

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

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

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

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

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

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

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

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

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

wechat 是名词,本身中间就是没空格的,所以 get_wechat_id 才是符合标准的
thinkershare
2021-12-06 22:18:54 +08:00
这个问题已经争论了无数次, 没有什么是好的或者坏的, 保持一致性最重要, 我记得<<.NET 设计规范>>有一章节专门讨论过这个问题, 结论是: 一致性最重要
aguesuka
2021-12-06 23:24:43 +08:00
LaTeXAsTeX
xiaojun1994
2021-12-07 09:41:10 +08:00
这种呢,innerHTML ,innerHtml ,HttpClient ,HTTPClient
littleshy
2021-12-07 11:26:38 +08:00
多看看所用框架的规范,照着来就好了。
2i2Re2PLMaDnghL
2021-12-07 13:12:40 +08:00
严格按照标准来转换的话应该是 get_we_chat_i_d 和 get-we-chat-i-d
inflection 库是这么说的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/820421

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX