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

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

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

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

8160 次点击
所在节点    程序员
84 条回复
villivateur
2022-05-26 22:34:51 +08:00
……也许微软的开发者心里还在骂你为啥不用大驼峰呢
……“草泥马”风格是什么鬼,另外匈牙利风格是异端,经常让变量名莫名其妙的
Biwood
2022-05-26 23:51:53 +08:00
CamelCase 叫大驼峰就好,乱起名字只会增加阅读屏障,简体中文已经够乱的了。再说草泥马也没有驼峰啊。
ShikiSuen
2022-05-27 00:14:09 +08:00
@villivateur 我轻易不用匈牙利,除非某些私有变数我会用 mut 或者 cst 开头(分别表示常数与变数;好像之前流行用下画线开头)。偶尔我会用 int 或者 str 开头。总之只要不引起歧异就好。对我而言匈牙利是符合变种的小写草泥马命名规则的。
forgottencoast
2022-05-27 00:24:50 +08:00
为什么?因为官方的设计规范就是这样约定的,所有的.Net 官方类库源代码也是遵循这个约定的。
绝大部分的 C#语言的使用者也都遵循这个约定。
你不想用这个风格可以自己改的。
Rocketer
2022-05-27 01:04:28 +08:00
嗯,C#出身的程序员也会觉得 Java 命名习惯很奇怪。

反正不符合自己多年养成的习惯的东西都是草泥马。
SMGdcAt4kPPQ
2022-05-27 01:07:24 +08:00
C#和 F#命名习惯还不一样
Jwyt
2022-05-27 01:16:38 +08:00
@ShikiSuen 匈牙利命名发才是迂腐过时的东西
dangyuluo
2022-05-27 01:22:16 +08:00
“为什么世界不围着我转”这个系列
neoblackcap
2022-05-27 01:25:08 +08:00
匈牙利命名法是已经过时的东西,但是 C#刚诞生的时候,编译工具以及静态分析工具并不那么强悍。工具并不能在你编写代码的时候就提示你或者帮你推导出类型。那个时候,匈牙利命名法的确起到一定的作用。
C#已经很多年历史了,总不可能把所有的东西推倒重来。但是微软并没有强制你使用特定的代码风格。用 C++写 Windows 程序一样会遇到大量匈牙利命名法的代码,但是一样可以用新的规范。封装好,团队内部有规范统一就可以了。
ysc3839
2022-05-27 05:23:24 +08:00
大概是微软的历史习惯
jjx
2022-05-27 06:43:35 +08:00
这个, lz 连 c#的历史都不了解一下就来喷
Mirage09
2022-05-27 06:51:19 +08:00
无聊..那我还说 python 下划线命名很反人类
Daming
2022-05-27 07:25:31 +08:00
为什么 C#默认风格的 { 要单起一行,就不能学 java 放在行尾吗 [doge]
dcsuibian
2022-05-27 07:56:10 +08:00
@Mirage09
Python 的下划线命名法确实很讨厌,不过倒不是因为它本身。
主要是搜到的不少参考代码甚至第三方库都不太遵守这种约定。例如 cv2.waitKey(),cv2.destroyAllWindows()。
看着 PyCharm 里一堆黄色波浪线脑壳疼。
liaohongxing
2022-05-27 08:07:06 +08:00
我觉得大写开头挺好的
bthulu
2022-05-27 08:08:44 +08:00
我不管写什么语言都用大驼峰命名类,小驼峰命名变量。
统一语言变量命名规范,从我做起!!!
xuanbg
2022-05-27 08:16:42 +08:00
啊……这……世界是围着我转的。吧?确认一下,微软 VS 预设让 C# 使用帕斯卡命名法是不是很奇怪?

什么!你们居然说这是正常的。嘤嘤嘤……这个世界居然没有围着我转。你们就不能哄我一下吗。
cozof
2022-05-27 08:33:19 +08:00
C#用大驼峰,又叫帕斯卡命名法。
makelove
2022-05-27 08:34:04 +08:00
py 和 c 这种下划线命名看起来最美观

C#的命名我最受不了,甚至变量和类都是大写开头没有区分,恶心到家了
geelaw
2022-05-27 08:44:15 +08:00
@ShikiSuen #3 用 int/str 做匈牙利命名无意义,匈牙利命名的前缀需要体现的是编程语言类型系统外的类型信息,比如一个 ushort * 到底是 bstr ( BASIC 风格字符串)还是 sz (以 0 结尾的字符串),再比如一个 int 到底是 cb (字节的个数)还是 n (对象的个数)……

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

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

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

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

© 2021 V2EX