比如WeChat
这个单词,有这么一个方法getWeChatID
,camelCase 下大家都会这么命名,但是到 snake_case 和 kebab-case 下很多人就会命名为get_wechat_id
和get-wechat-id
,严格按照标准来转换的话应该是get_we_chat_id
和get-we-chat-id
。
再举一个更实际的例子,在 Vue 的源码中,定义类型的时候写成的是VNode
,但是写成一个局部变量就写成了vnode
,而不是vNode
。
这对强迫症来说真的很难受,感觉就是怎么看着舒服怎么来,那么大家有没有什么更合理的解释呢?
1
yuezk 2021-12-06 18:06:13 +08:00
怎么说呢,个人感觉规则是用来规范绝大多数的命名,一个规则没有办法覆盖所有的情况,尤其是像变量命名这种没有绝对对错的东西。至于 `vNode` 和 `vnode`,个人感觉两者都可以的,可以灵活使用,关键是要统一,一个项目中不能一会用 `vnode`,一会儿用 `VNode`。
如果有强迫症的话,换个角度想,尽力保证命名的一致性才是最终目的,有没有好点。 |
2
karloku 2021-12-06 18:39:27 +08:00 1
驼峰蛇形的拼写并不是刻板的按照大写转小写加下划线, 而是要看里面每个部分的单词本身.
WeChat 本身是一个词, 所以小写的时候也不会拆开. get WeChat ID -> getWeChatID -> get_wechat_id 套规则的时候还是得先看里面单独的单词是什么, 然后再拼接起来. |
3
yuezk 2021-12-06 19:16:30 +08:00 via iPhone
另一种解释是把 vnode 当作一个专有名词,对应的大写版本就是 VNode ,不能把它拆成 V 和 Node ,所以驼峰命名的时候使用它的小写版本 vnode 。类似的单词还有 cmake 和 CMake
|
4
yulon 2021-12-06 19:33:44 +08:00
驼峰都有两种,一种 getURL ,专有名词里大写的也全部大写,一种 getUrl ,只大写第一个字母。
既然你口语里是 URL 而不是 U R L ,那也没必要写成 u_r_l 。 这些写法都是代替空格,而不是增加空格。 |
5
pursuer 2021-12-06 20:11:36 +08:00
只要能看懂,命名比较随意,不是很在意。因为修改命名是有成本和风险的,但收益却很低。我的习惯是尽可能前向兼容。
|
6
eason1874 2021-12-06 22:12:00 +08:00
snake_case 是把句子的大写字母换小写,空格换下划线
wechat 是名词,本身中间就是没空格的,所以 get_wechat_id 才是符合标准的 |
7
thinkershare 2021-12-06 22:18:54 +08:00
这个问题已经争论了无数次, 没有什么是好的或者坏的, 保持一致性最重要, 我记得<<.NET 设计规范>>有一章节专门讨论过这个问题, 结论是: 一致性最重要
|
8
aguesuka 2021-12-06 23:24:43 +08:00
LaTeXAsTeX
|
9
xiaojun1994 2021-12-07 09:41:10 +08:00
这种呢,innerHTML ,innerHtml ,HttpClient ,HTTPClient
|
10
littleshy 2021-12-07 11:26:38 +08:00
多看看所用框架的规范,照着来就好了。
|
11
2i2Re2PLMaDnghL 2021-12-07 13:12:40 +08:00
严格按照标准来转换的话应该是 get_we_chat_i_d 和 get-we-chat-i-d
inflection 库是这么说的。 |