请问一个新设计的程序语言,是选择 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 我个人认为,确实好读一些。

希望大家能给出一些建议。
4993 次点击
所在节点    程序员
94 条回复
NXzCH8fP20468ML5
2023-09-16 12:33:04 +08:00
我个人倾向 snake_case 。
因为有些时候用 camelCase 比较蛋疼,getId ? getID ? getid ?
不过这些都是取舍问题,统一就好。
wangkun025
2023-09-16 12:36:18 +08:00
我喜欢后者。因为我用 ruby
des
2023-09-16 12:36:20 +08:00
个人倾向于 snake_case
xieyuheng
2023-09-16 12:36:53 +08:00
@xxfye 对,camelCase 遇到本身就是大写字母的地方,就有很大歧义。比如 URL JSON ID 之类的。
xieyuheng
2023-09-16 12:38:43 +08:00
@wangkun025 我本来也是 snake_case ,我现在也觉得 snake_case 比 camelCase 更易读一点点。

但是作为前端程序员,写了太多太多 JavaScript/TypeScript 了,你懂的。。。
leonshaw
2023-09-16 12:43:29 +08:00
缝合一下,下划线分词同时保留原始大小写。URL_encode, get_ID, is_iOS
usedTo404
2023-09-16 12:45:59 +08:00
看看 C#的风格,很满足我对微软的想象
liuguang
2023-09-16 12:51:46 +08:00
rust 都用小写下划线隔开
cmdOptionKana
2023-09-16 12:52:01 +08:00
关键问题:这个语言的目标用户是谁?

如果目标用户明确,那就按照他们的习惯来。如果预估用户不多,那也可以任性一点按自己的喜好来。
Nazz
2023-09-16 12:53:35 +08:00
无 gc 就选 snake_case
NXzCH8fP20468ML5
2023-09-16 12:55:52 +08:00
如果是面向对象,就遵从 Java ,C#的 camelCase 。
如果是其他的,就用 snake_case 吧。
看你的有点像 lisp 和 Elixir ?
xieyuheng
2023-09-16 12:57:59 +08:00
@cmdOptionKana 目前还是一个研究式的东西,但是想未来让这个语言变成一个通用的程序语言。
paopjian
2023-09-16 12:58:17 +08:00
我是不喜欢按 shift 键的,很麻烦,都是 ide 自动提示的, 要是语言支持中文,我写中文可能比英文还多
在断句简单时候 camelCase 好,但是全都是大写的时候 snake_case 好点.
xieyuheng
2023-09-16 12:59:40 +08:00
@xxfye 我其实是实现了一个新奇的计算模型,叫做 Interaction nets ,感觉不算是面向对象或者函数式编程了。

关于这个语言,之前也有在 V2EX 发过分享: https://www.v2ex.com/t/970898#reply0
xieyuheng
2023-09-16 13:00:32 +08:00
@paopjian 是可以支持中文,并且语法关键词之后也可以考虑支持双语的,那就有意思了,哈哈。
duke807
2023-09-16 13:02:38 +08:00
snake_case +1024
BBCCBB
2023-09-16 13:20:13 +08:00
我喜欢 camelCase
BBCCBB
2023-09-16 13:21:05 +08:00
只要语言没限制死. 想驼峰或者下划线都可以..
hsfzxjy
2023-09-16 13:23:13 +08:00
变量 snake_case
类型 Snake_Case
/doge
to2false
2023-09-16 13:24:54 +08:00
snake_case++++++++1

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

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

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

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

© 2021 V2EX