大范围函数变量的良好命名约定是什么?

时间:2020-03-06 14:54:18  来源:igfitidea点击:

我们可以对类成员,静态对象,全局对象和结构使用不同的命名约定。它们的一些示例如下。

_member
m_member

或者在Java情况下,this.member的用法。

但是,当单个变量具有完整的功能范围或者较短的寿命范围时,是否有任何好的技术或者命名约定可以传达功能变量的作用?

void MyFunction()
{
  int functionScopeVariable;

  if(true)
  {
    //no need for function variable scope naming convention
  }
}

解决方案

我们倾向于在函数中使用l_前缀表示" local"。而且,效果很好。

一种方法是遵循以下准则:变量的范围越大,名称越长。这样,全局变量将获得长的描述性名称,而范围受限的内容(如循环索引变量)可以小至单个字母。

我在全局变量,静态变量和成员变量上使用前缀或者特殊的命名约定,因此不必在本地变量上使用前缀。我更喜欢使用简短的局部变量名称的选项,尤其是对于循环变量。

实际上,这一切都归结为该语言的样式指南所建议的内容(如果有的话)。

有一个论点是我们不应该具有"大范围函数",因此仅使用"小范围函数"变量命名约定就不会有问题。

我想只要传达了使用含义,就可以了。

我喜欢保持简单,我使用:

m_varname - Class member variables
 g_varname - Global variables

实际上,我鼓励将此任务委托给我们使用的IDE /编辑器。

不,我实际上不是在谈论变量的命名,这仍然是人类最好的方法。但是,这种命名策略的基本任务是向我们显示任何一个名称代表什么类型的变量。

几乎每一个值得投入的IDE都可以为不同的变量类型(实例成员,静态成员,参数,局部变量等)定义不同的样式(颜色,字体,字体类型等),因此让IDE告诉我们实际上,它使我们不必每次都键入那些(否则无用的)前置词后缀。

所以我的建议是:使用有意义的名称,不带任何前缀或者后缀。

来自MSFT的指南和其他有关私有实例字段的样式指南是_memberName(驼峰表示法的前缀为" _")。这也是许多最近的Microsoft教程的源代码中使用的约定。

我使用它是因为它更短,而不是匈牙利语,并且R支持它作为私有实例字段的默认规则。

我也喜欢它,因为它应该使Intellisense的私有字段模糊,因为我们应该更喜欢先访问公共成员。如果我想访问属性Name并开始输入" Na",则第一个建议是Pascal大小写的公共实例属性Name。在极少数情况下,我想直接访问私有字段,这迫使我做出有意识的决定,开始输入"`_",然后在Intellisense弹出窗口中获得私有字段的完整列表。

我还看到了一些指导,说如果它是名为MemberName(以" _`"开头的小写字母表示法)的公共属性的支持字段,则应为_MemberName,我个人不喜欢这样做,因为我认为大写字母M为冗余,添加不必要的击键,并且不添加任何其他信息。

我使用与类成员相同的约定。 IDE应该注意查找声明。如果一个函数太大而令人困惑,那就成了问题,那么有一个更大的问题需要解决。