请问一个新设计的程序语言,是选择 camelCase 好,还是先择 snake_case 好?

2023-09-16 12:16:12 +08:00
 xieyuheng
大家可能要笑了,这也算问题?

但是其实我是很严肃地在考虑这个问题的。
因为尽管在写代码的时候,用户可以做出选择,
但在语言的文档和标准库中,还是要选择一种命名规范的。
而做这种选择对我来说是很艰难的。

我说的 “新设计的程序语言” 具体是这个: https://github.com/cicada-lang/inet

我刚刚用一个 commit 把 snake_case 改成了 camelCase:

https://github.com/cicada-lang/inet/commit/7625a8ad5f87da1ab9c4fd231fc8142ca8900d79

但是我不确定这样做是 “正确的”。

我能想到的,选择 camelCase 的理由:

( 1 )语言已经选择使用 BigCamelCase 作为类型的命名规则了,比如 `DiffList`,
此时如何想要一个变量,直接在这个类型名字前面加上变量的前缀就好了,比如 `emptyDiffList`,
如果用 snake_case ,就需要编辑类型名,而写成 `empty_diff_list`。

( 2 )这个语言目前是用 JavaScript/TypeScript 实现的,而 JavaScript 用的是 camelCase 。
并且未来想要用 Zig 再实现一遍,而 Zig 用的也是 camelCase 。

我能想到的,选择 snake_case 的理由:

( 1 ) snake_case 我个人认为,确实好读一些。

希望大家能给出一些建议。
4996 次点击
所在节点    程序员
94 条回复
xieyuheng
2023-09-16 15:53:12 +08:00
@ipcjs 确实,Zig 就是你说的这样。
uni
2023-09-16 15:58:22 +08:00
@ipcjs rust 就是 snake_case 啊
dcsuibian
2023-09-16 16:01:09 +08:00
camelCase
python 规范就是应该用 snake_case 的,但我就看到了大量使用 camelCase 的人。比如 opencv 的 cv2.waitKey(0)
相反来说在 java 、javascript 里我就很少见到要使用 snake_case 的人
ye4241
2023-09-16 16:07:36 +08:00
我是 C# 开发用 PascalCase 和 camelCase ,但是我也喜欢 Python 的 snake_case ,很多时候 camelCase 显得特别难,比如很多本来就是缩写的词汇,UI ,是用 uI 还是 UI 呢?在 python 里面 ui 小写看着也挺顺的。所以在 C#中,我一般会写全,规避缩写,userInterface ,就没啥太大问题了。
yougg
2023-09-16 16:08:28 +08:00
个人从输入偷懒角度看选择 camelCase
_c 需要按键 3 次
C 只用按键 2 次
而且按 Shift 和 _ 时右手挪动范围更大,位置稍偏,出错概率更大
xieyuheng
2023-09-16 16:12:23 +08:00
@dcsuibian 在 JS 项目里用 snake_case 我只知道一个例子,那就是 svelte 。

比如: https://github.com/sveltejs/svelte/blob/master/packages/svelte/src/compiler/compile/nodes/Element.js
kiroter
2023-09-16 16:15:12 +08:00
_ 这个我觉得写代码的时候,要两手一起按不爽
James369
2023-09-16 16:22:35 +08:00
业务型软件 camelCase ,技术型软件 snake_case
placeholder
2023-09-16 16:23:17 +08:00
我投 snake_case 一票
chendy
2023-09-16 16:25:53 +08:00
随便啥都行
下划线的问题是,如果只有一个中文输入法,按 shift 没按明白会切中英文然后难受一下
驼峰的问题是,习惯 shift 的话和下划线一样,习惯 caps lock 的(虽然不理解但是真有不少人这么干…)切起来很麻烦
IvanLi127
2023-09-16 16:36:06 +08:00
如果是做语言并且有官方限制的话,那应该就是选 snake_case 了,这种基本上可以肯定,比别的不容易出问题。
Al0rid4l
2023-09-16 16:38:52 +08:00
Al0rid4l
2023-09-16 16:42:23 +08:00
考虑到写得爽, 投 camelCase

camelCase 只要按 shift
snake_case 要 shift + - 就很累
rekulas
2023-09-16 16:49:36 +08:00
下划线可读性稍微高一点
我选驼峰,因为下划线稍微多几个词 看起来就很怪且 low 的感觉
至于大小写问题感觉还好,有些词是固定大小写的,就应该按它本身的来书写
比如 getPHPUsers 而不是 getPhpUsers
wipbssl
2023-09-16 16:50:43 +08:00
更习惯 snake_case
xieyuheng
2023-09-16 16:53:06 +08:00
@rekulas 你这个 “很怪且 low 的感觉”我觉得确实是有一些。

比如商标都选择:

YouTube
GitHub
iPhone
eBay

而不是

you_tube
git_hub
i_phone
e_bay
libook
2023-09-16 17:09:14 +08:00
看语言、数据库等兼容性,比如有的语言核心库都是遵照某种风格的,或者有的数据库只支持某种风格,就尽量追求统一。

之前一种说法是,驼峰能少按键。

但归根结底还是看喜好。

我之前写 JS ,一种风格是变量用小驼峰,常量全大写+下划线,类型大驼峰。不同风格代表不同信息。
libook
2023-09-16 17:11:01 +08:00
用驼峰的话,大写只是为了断词所以可以统一规定缩写也一律按照首字母大写其他字母小写的规则。
yazinnnn
2023-09-16 17:54:52 +08:00
用-分割的叫啥类别?
cnbatch
2023-09-16 17:57:15 +08:00
其实没什么好不好的,全凭作者喜好而定

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

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

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

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

© 2021 V2EX