在用不同语言命名属性,方法和类时,首选的约定是什么?

时间:2020-03-05 18:49:14  来源:igfitidea点击:

不同语言的命名约定是否相似?如果没有,有什么区别?

解决方案

回答

当然,存在一些通用准则,但是由于语言语法\设计的差异,也存在差异。

对于.NET(C#,VB等),我建议以下资源:

  • 框架设计指南-有关.NET编码指南(包括命名约定)的权威书籍
  • 命名准则-Microsoft的准则
  • 一般命名约定-另一套MS准则(C#,C ++,VB)

回答

每种语言都有特定的样式。最后一个。
每个项目都采用特定的样式。至少,他们应该。有时这可能与语言可能根据开发领导者的偏好使用的规范样式不同。

使用哪种风格?

如果语言附带一个好的标准库,请尝试采用该库中的约定。

如果语言有一本规范的书(《 C编程语言》,《 Camel书》,《 Ruby编程》等),请使用该书。

有时,语言设计人员(C#,Java会想到)实际上编写了一堆准则。使用它们,尤其是在社区也采用它们的情况下。

如果我们使用多种语言,请记住保持灵活性,并根据在使用Python进行编码时所使用的语言来调整首选的编码样式,以使用与在Cetc中进行编码不同的样式。

回答

G'day,

我可以提出的最佳建议之一是阅读史蒂夫·麦康奈尔(Steve McConnell)的《 Code Complete》(Amazon Link)的相关部分。他对命名技术进行了精彩的讨论。

高温超导

干杯,

回答

我认为大多数命名约定都会有所不同,但是开发人员(例如,我将变量命名为:mulitwordVarName),但是我使用过的一些开发人员使用了诸如mulitword_var_name或者multiwordvarname或者aj5g54ag或者...之类的东西……我认为这确实取决于偏好。

回答

正如其他人所说,事情千差万别,但以下是各种语言中最常用的命名约定的简要概述:

小写,lowercase_with_underscores:

常用于局部变量和函数名称(典型的C语法)。

大写,UPPERCASE_WITH_UNDERSCORES:

常用于不变的常量和变量。某些(较旧的)语言(例如BASIC)也有一个约定,即所有变量名都使用大写形式。

CamelCase,javaCamelCase:

通常用于函数名称和变量名称。有些人仅将其用于函数,并将其与小写字母或者lowercase_with_underscores组合以用于变量。使用javaCamelCase时,通常将其同时用于函数和变量。

对于外部API,此语法也很常见,因为Win32和Java API就是这样做的。 (即使库内部使用了不同的约定,它们通常也使用(java)CamelCase语法导出函数名称。)

prefix_CamelCase,prefix_lowercase,prefix_lowercase_with_underscores:

常用于不支持名称空间的语言(例如C)。前缀通常表示函数或者变量所属的库或者模块。通常保留给全局变量和全局函数。前缀也可以大写。有些约定对内部函数和变量使用小写字母前缀,对导出的函数使用大写字母前缀。

当然,还有许多其他方式来命名事物,但是大多数约定都是基于上述提到的一种约定或者基于这些约定的多种约定。

顺便说一句:我忘了故意提到匈牙利符号。

回答

多年前,一个聪明的老程序员教给我匈牙利表示法的弊端,这是一个真正的遗留系统,微软在Windows SDK中采用了它,后来在MFC中采用了它。它是针对诸如C之类的松散类型语言而设计的,而不是针对诸如C ++之类的强类型语言而设计的。当时我正在使用Borland的Turbo Pascal 1.0 for Windows(后来成为Delphi)对Windows 3.0进行编程。

无论如何,长话短说,这一次我正在研究的团队基于简单的前缀非常简单地开发了自己的标准,并且适用于几乎所有语言-

  • 一个论点
  • l-本地
  • m-成员
  • g-全局

这里的重点是作用域,依靠编译器检查类型,我们需要关心的只是作用域,数据所在的位置。与讨厌的旧匈牙利表示法相比,它具有许多优点,因为如果我们通过重构更改某些事物的类型,则不必搜索和替换所有事物的实例。

将近16年后,我仍然提倡使用这种做法,并发现它几乎适用于我开发的每种语言。