为什么吸气剂的前缀是"get"?

Joe*_*oey 6 conventions

一般来说,创建一个流畅的API可以让所有程序员都满意; 编写接口的创建者和编程接口的消费者.超越惯例,为什么我们在所有获取者前面添加单词"get".省略它通常会产生更流畅,易于阅读的指令集,最终会带来快乐(无论是小的还是被动的).考虑这个非常简单的例子.(伪代码)

常规:

person = new Person("Joey")
person.getName().toLower().print()
Run Code Online (Sandbox Code Playgroud)

替代方案:

person = new Person("Joey")
person.name().toLower().print()
Run Code Online (Sandbox Code Playgroud)

当然,这仅适用于getter/setter是常态但不针对任何特定语言的语言.这些约定是围绕技术限制(消歧),还是仅仅通过追求更明确,有意的感觉类型的界面而开发的,或者这可能仅仅是一种涓涓细流的情况.你的想法是什么?如何简单地改变这些惯例会影响你的快乐/日常态度(无论多么微小).

谢谢.

Jus*_*ner 10

因为,在没有Properties的语言中,name()是一个函数.但是,如果没有更多的信息,它并不一定具体说明它正在做什么(或它将返回什么).

函数/方法也应该是动词,因为它们正在执行某些操作.name()显然不适合该法案,因为它没有告诉你它正在执行什么行动.

getName() 毫无疑问,让您知道该方法将返回一个名称.

在具有"属性"的语言中,某个属性为Property的事实表达与获取或设置属性相同的含义.它只是让事情看起来有点整洁.


dan*_*ben 6

我听过的关于使用 get/set 前缀的最佳答案是这样的:

如果您不使用它们,访问器和修改器(getter 和 setter)将具有相同的名称;因此,它们会超载。通常,您应该只在方法的每个实现执行相似的功能(但具有不同的输入)时重载该方法。

在这种情况下,您将有两个同名的方法执行截然不同的功能,这可能会使 API 用户感到困惑。