我不明白为什么微软 VS 预设让 C# 使用大写草泥马命名风格。

2022-05-26 22:26:13 +08:00
 ShikiSuen

我不明白为什么微软 VS 预设让 C# 使用大写草泥马命名风格。

之前我 Swift 用小写草泥马命名风格夹杂匈牙利命名风格已经习惯了, 结果现在得在命名方面另外动脑筋了。

8193 次点击
所在节点    程序员
84 条回复
yolee599
2022-05-27 08:56:43 +08:00
C# 那个是帕斯卡命名法,比匈牙利命名法好看多了
nba2k9
2022-05-27 09:01:26 +08:00
万能喷射战士
ShikiSuen
2022-05-27 09:05:19 +08:00
@Daming C#默认风格的 { 要单起一行,是因为那是微软公司内部的 clang-format 风格。
我就用这套风格整 ObjC 的档案正文,读起来超方便。不過 Mozilla 風格也不錯就是了。
ColinZeb
2022-05-27 09:07:02 +08:00
@makelove 变量,形参、实参都是小写开头,属性是大写开头,字段下划线开头
litguy
2022-05-27 09:07:45 +08:00
上世纪末我们大学时候学 WIN32 编程就是匈牙利命名法
这个是历史遗留问题
不是 C# 的问题
而且匈牙利命名法也不是你说的那样一无是处
sunmker
2022-05-27 09:10:50 +08:00
其实微软自己也不怎么遵守的,我以前看 C#高级教程的时候,书中提到过
Saxton
2022-05-27 09:11:40 +08:00
@Biwood 你这草泥马没有驼峰给我整破防了
makelove
2022-05-27 09:13:04 +08:00
@ColinZeb 对对,我说的是类的属性和方法是大写开头,真的欣赏不能
ColinZeb
2022-05-27 09:18:10 +08:00
@makelove 先入为主的习惯问题,我觉得 c#的命名方式已经很丰富了。实际使用中类大写开头(如 new Class 、Class.Static ),方法小括号结尾,属性不带小括号结尾,基本没有分不清的情况
lower
2022-05-27 09:20:32 +08:00
@makelove go 更屌,用第一个驼峰的大小写来表示属性的可访问性😂
Helsing
2022-05-27 09:29:46 +08:00
@bthulu #16 +1
nothingistrue
2022-05-27 09:33:50 +08:00
在微软在设计 C# 的时候,全世界都在用大驼峰法风格(除了当时还处于新生阶段的 Java ),而 C# 是在 VB 、MFC 的基础上改良,不是像 Java 那样完全推到重做,自然就顺延了之前的大驼峰风格。所以并不是微软让 C# 用大驼峰法风格,而是微软在大驼峰风格下诞生了 C#。

确切得说,并没有大驼峰法跟小驼峰法的区别,而是“类型(类、接口等)名称用大驼峰法,保留关键字、成员、方法、变量等用小驼峰法”,跟“全部用大驼峰法(因为不好区分,通常要额外使用匈牙利命名风格)”的区别。C# 除了因为历史原因没法用前者之外,还有一个原因是除了保留关键字,别名(例如 String 的别名 string )、各种语法糖也用小写,导致即使变量用小驼峰还是有混淆,干脆就破罐子破摔了。
dqzcwxb
2022-05-27 09:36:22 +08:00
@nothingistrue #32 "不是像 Java 那样完全推到重做"麻烦细说一下或者给个资料链接谢谢
nothingistrue
2022-05-27 09:41:28 +08:00
@ColinZeb 还是有区别的,比如 Java 当中可以用 People people 定义某人(即 people 隐含 some people 、a people 或者 one people 的意思),C# 就不行,People People 定义出来后你完全不知道 People 代表的是类型还是实例,只能换成 People OnePeople ,或者 CPeople People (万恶的匈牙利命名法)
Mirage09
2022-05-27 09:49:10 +08:00
@dcsuibian
不不不 我并不想表达哪种命名好哪种命名差 我只是觉得吵这件事很无聊
frisktale
2022-05-27 09:52:39 +08:00
@nothingistrue 啊? C#定义变量的时候不都是小写字母开头嘛,为啥会出现 People People 的情况啊。
qW7bo2FbzbC0
2022-05-27 09:52:40 +08:00
你可以入乡随俗,见人说人话,见鬼说鬼话,
也可以定义 IDE 规则,全部按照你的风格来
ColinZeb
2022-05-27 09:54:23 +08:00
@nothingistrue 变量一般用 var people,至于属性用 Perple People 吴论如何都有歧义,不如写成 People One😀
clino
2022-05-27 09:55:33 +08:00
我投下划线一票,感觉这样阅读起来比较舒服,驼峰读起来比较费尽我本能地就是反感
nothingistrue
2022-05-27 10:01:21 +08:00
@frisktale #36 要是变量小写字母开头,楼主就不会来这里开贴了。
@ColinZeb #38 变量名用小驼峰法,这在 Java 是基础规范,从最基础的 JDK ,到中间的各种框架,到高层应用开发,都用着一个规范。C# 的问题是,你可以在部分地方用小驼峰法,甚至可以团队规范硬性要求用小驼峰法表示变量,但是遇见基础类库和第三方框架就要抓瞎,所以还不如统一用大驼峰法表示变量,再用其他手段区分同名的类型和变量

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

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

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

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

© 2021 V2EX