好的,这个很难谷歌。
偶尔,我偶然发现使用命名约定的任何语言的代码,其中变量名称在某些情况下以前缀“the”开头。
然而,我无法弄清楚这些情况是什么。所以我的问题是:这个惯例是否常见?它有名字吗?
如果1)仍然是“ungoogleable”:这个约定的原则是什么?它解决了什么问题?我想了解。
如果1)和2)不涵盖:会议来自何处?它的起源是什么?是或是否与特定的编程语言相关?
示例:
从Steinberg ASIO SDK 2.3,文件asiodrivers.cpp,第88行:
extern IASIO* theAsioDriver;
其中IASIO是接口定义。
http://hl7api.sourceforge.net/base/apidocs/src-html/ca/uhn/hl7v2/util/StringUtil.html
http://xml.apache.org/xalan-c/apiDocs/classXStringAllocator.html
我希望能够深入了解人们为什么这样做。一个例子可能是在setter / getter方法中告诉成员参数,但这种前缀选择对我来说似乎是随机的。
答案 0 :(得分:1)
我唯一想要用 来启动变量名称的时间就是表明它是singleton。除此之外,似乎没有必要使用它。
答案 1 :(得分:1)
根据个人经验(主要是Java,Ruby,Python以及很久以前的C和C ++),您描述的惯例并不常见。
有一个相关的惯例,"类型建议参数名称" Kent Beck" Smalltalk最佳实践模式" (无论你是否编写Smalltalk,都是一本优秀的书),它命名方法参数a(type)
或an(type)
,例如anObject
。我的理解是,这个约定是使代码读取更像英语,而不是避免任何可能出现的命名冲突。 (Smalltalk类是大写的,因此可以使用下层类名命名参数,并且不会发生冲突。)
这个约定的扩展版本,我在其中看到了带有a
或an
的前缀参数或局部变量以及带有the
的对象实例变量,这是有道理的:实例变量是& #34;所述"对于包含对象最重要的一个,而参数或本地只是" a"事情。我希望我能记住我在哪里看到它。我认为它是由一位着名作家撰写的。
我自己通常不会使用这些约定;相反,我(像我见过的大多数代码一样)在Java中使用this.
,在Ruby中使用self.
来消除实例变量的歧义,并依靠简短的方法来避免消除参数和本地消歧的需要。为角色命名变量而不是它们的类型(在任何情况下都是最佳实践)通常也不需要这些约定。
然而,受到我曾经读过的任何内容的启发,当局部阴影一个方法或函数时,我使用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
但空的括号对我来说似乎不那么我喜欢"":
def foo
7
end
the_foo = foo
=> 7
在Python中,无论函数的参数计数如何,本地都可以隐藏函数,因此我发现自己更频繁地达到the
。