一般来说,创建一个流畅的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的事实表达与获取或设置属性相同的含义.它只是让事情看起来有点整洁.
我听过的关于使用 get/set 前缀的最佳答案是这样的:
如果您不使用它们,访问器和修改器(getter 和 setter)将具有相同的名称;因此,它们会超载。通常,您应该只在方法的每个实现执行相似的功能(但具有不同的输入)时重载该方法。
在这种情况下,您将有两个同名的方法执行截然不同的功能,这可能会使 API 用户感到困惑。