2

好的,这个很难用谷歌搜索。

有时,我偶然发现使用命名约定的任何语言的代码,其中变量名称在某些情况下以前缀“the”开头。

然而,我无法弄清楚这些情况是什么。所以我的问题是:

  1. 这个约定很常见吗?它有名字吗?

  2. 如果 1) 仍然“无法搜索”:这个约定背后的原则是什么?它解决了哪些问题?我想了解。

  3. 如果 1) 和 2) 未涵盖:约定从何而来?它的起源是什么?它是否与特定的编程语言相关联?

例子:

我希望能深入了解人们为什么这样做。一个例子可能是在 setter/getter 方法中告诉成员的参数,但这种前缀的选择对我来说似乎是随机的。

4

2 回答 2

1

唯一一次我想用 开始一个变量名表明它是一个单例。除此之外,它的使用似乎没有必要。

于 2013-07-13T23:44:20.637 回答
1

根据个人经验(主要是 Java、Ruby、Python,以及很久以前的 C 和 C++),您描述的约定并不常见。

有一个相关的约定,Kent Beck 的“Smalltalk Best Practice Patterns”(无论您是否编写 Smalltalk 都是一本优秀的书)中的“Type Suggesting Parameter Name”模式,它命名方法参数a(type)an(type),例如anObject. 我的理解是,这个约定是为了让代码读起来更像英语,而不是避免任何可能出现的命名冲突。(Smalltalk 类是大写的,所以可以用小写的类名来命名参数,这样就不会发生冲突。)

这个约定的扩展版本,我在某处看到带有aor前缀的参数或局部an变量和带有 的对象实例变量the,这是有道理的:实例变量是“对”包含对象最重要的一个,而参数或局部变量只是“一个东西。我希望我能记得我在哪里看到的。我认为它是由一位知名作家撰写的。

我自己通常不使用这些约定。相反,我(就像我见过的大多数代码一样)this.在 Java 和self.Ruby 中使用来消除实例变量的歧义,并依靠简短的方法来回避消除参数和局部变量歧义的需要。为它们的角色而不是它们的类型命名变量(在任何情况下都是最佳实践)通常也消除了对此类约定的需要。

然而,受我曾经读过的任何东西的启发,我the在本地隐藏方法或函数时使用,我只是想不出一个不同的有意义的本地名称。

在 Ruby 中,只有当方法没有参数时,本地才会隐藏方法:

def foo
  7
end
foo = foo
=> nil # the left hand side shadowed the right hand side

这可以通过使用空括号调用方法来避免:

def foo
  7
end
foo = foo()
=> 7

但空括号对我来说似乎太不像Ruby了,我更喜欢“the”:

def foo
  7
end
the_foo = foo
=> 7

在 Python 中,无论函数的参数数量如何,本地人都可以隐藏函数,因此我发现自己the更频繁地伸手去拿。

于 2016-12-08T00:01:20.190 回答