Tag: getter

Java方法命名约定:太多getter

为什么Java方法名称广泛使用“get”前缀? 至less在我的Java程序中,有很多名称以“get”开头的方法。 get-methods的百分比可疑很高。 由于通货膨胀,我开始觉得“get”这个词正在失去意义。 这是我的代码中的噪音。 我注意到在函数式/声明式编程和PL / SQL中使用了不同的命名约定。 方法名称只是说明方法返回的内容。 他们将使用account.amount()和Time.isoFormattedDateString(Date date)代替account.getAmount()或Time.isoFormattedDateString(Date date) 。 这对我来说非常有意义,因为函数的名称描述了对方法进行评估的结果(假设没有任何副作用)。 “get”前缀似乎是多余的。 我刚刚开始阅读“清洁代码”一书。 它说方法应该只做一件事,而那个东西通常应该是下列之一: 通知一些事件的对象,通常作为parameter passing事件。 询问关于某个对象的问题,通常使用方法名称形成自然语言语句,将对象作为parameter passing并返回一个布尔值。 取东西,可能传递一些查找键或一些对象作为参数转换,并始终返回所需的对象/值。 我的问题是关于第三类。 除了“获得”这种方法是否有命名约定? 在select方法名称/前缀时使用什么标准? 这里是一个例子: 我有两个方法getDates()和getSpecialDates() 。 getDates()只是返回一个私有variables的值(对date集合的引用)。 据我所知,这是一个标准的吸气剂。 getSpecialDates()是不同的; 它调用getDates() ,从另一个类中获取一个filter,应用filter并返回getDates()一个子集。 方法getSpecialDates()可以被命名为computeSpecialDates() , findSpecialDates() , selectSpecialDates()或elicitSpecialDates()或其他。 或者我可以简单地将其命名为specialDates() 。 然后,为了一致性,我可以将getDates()重命名为dates() 。 为什么要在应该以“get”为前缀的方法和不应该使用的方法之间进行区分,以及为什么要为“get”findreplace字呢?

在Java中设置和获取方法?

我怎样才能使用这个方法,并且为什么要使用它们? 他们真的有帮助吗? 你也可以给我一些例子,并获得方法?

犀牛嘲弄AssertWasCall(多次)属性获取使用AAA

我有一个模拟对象作为构造函数parameter passing给另一个对象。 我怎样才能testing一个模拟对象的属性被调用? 这是我目前正在使用的代码: INewContactAttributes newContact = MockRepository.GenerateMock<INewContactAttributes>(); newContact.Stub(x => x.Forenames).Return("One Two Three"); someobject.ConsumeContact(newContact); newContact.AssertWasCalled(x => { var dummy = x.Forenames; }); 这个工作除了在“someobject”Forenames属性上的吸气剂多次使用。 那就是当我得到“Rhino.Mocks.Exceptions.ExpectationViolationException:INewContactAttributes.get_Forenames();预期#1,实际#2 ..” 简单使用 newContact.AssertWasCalled(x => { var dummy = x.Forenames; }, options => options.Repeat.Any()); 不起作用,并给出下面的错误: “期待已经从等待的期望列表中删除,你是否调用了Repeat.Any()?这在AssertWasCalled()中不受支持。 那么如何迎合多个电话呢?

艾伦霍勒布写道:“你不应该使用获取/设置function”,他是正确的?

艾伦霍勒布写了以下内容, 没有一些耦合,你不能有一个程序。 尽pipe如此,通过严格遵循OO(面向对象的)规则(最重要的是对象的实现应该完全从使用它的对象中隐藏),可以大大减less耦合。 例如,对象的实例variables(不是常量的成员字段)应始终保密。 期。 没有例外。 永远。 我是认真的。 (您可以偶尔使用受保护的方法,但受保护的实例variables是可憎的。) 这听起来合理,但他接着说, 你不应该使用get / set函数出于同样的原因 – 他们只是过于复杂的方式来公开一个字段(尽pipe访问函数返回成熟的对象而不是基本types的值是合理的,在返回的对象类是devise中的关键抽象)。 坦率地说,对我来说听起来很疯狂。 我理解隐藏信息的原理,但是如果没有访问器和修改器,就根本无法使用Java Bean。 我不知道如何在模型中没有访问器的情况下遵循MVCdevise,因为模型不能负责渲染视图。 但是,我是一个年轻的程序员,每天都会学习更多关于面向对象的devise。 也许有更多经验的人可以考虑这个问题。 艾伦霍勒布的文章供参考 为什么延伸是邪恶的 为什么Getter和Setter方法是邪恶的 相关问题: 爪哇:吸气剂和固化剂是邪恶的吗? 是不是真的没有使用setter和getters? 获得和设置functionstream行与C ++程序员? 你应该使用类中的访问器属性,还是仅仅从类之外?

魔术__get getter在PHP中的静态属性

public static function __get($value) 不起作用,即使这样做了,恰巧我已经在同一个类中需要魔术__get getter来获取实例属性。 这可能是一个是或否的问题,所以,这是可能的?

访问器方法(getter和setter)在C ++中的约定

关于C ++的访问器方法的几个问题已经被问到,但是没有一个能够满足我对这个问题的好奇心。 我尽可能地避免使用访问器,因为像Stroustrup和其他着名程序员一样,我认为一个类中有许多是OO的坏迹象。 在C ++中,我可以在大多数情况下为类添加更多的责任,或者使用friend关键字来避免它们。 但在某些情况下,您确实需要访问特定的class级成员。 有几种可能性: 1.根本不使用访问器 我们可以公开各自的成员variables。 这在Java中是不可行的,但对于C ++社区来说似乎没有问题。 然而,我有点担心的情况是明确的复制或只读(const)引用的对象应该被返回,这是夸大? 2.使用Java风格的get / set方法 我不确定它是否来自Java,但我的意思是: int getAmount(); // Returns the amount void setAmount(int amount); // Sets the amount 3.使用客观的C风格get / set方法 这有点奇怪,但显然日益普遍: int amount(); // Returns the amount void amount(int amount); // Sets the amount 为了这个工作,你将不得不为你的成员variablesfind一个不同的名字。 有些人附加一个下划线,其他人则加上“m_”。 我也不喜欢。 你使用哪种风格,为什么?

获得者和制定者有什么意义?

可能重复: 为什么使用getters和setter? 我已经阅读了关于Java书籍,说为像x和y这样的variables创buildsetter和getter是很好的。 例如: public int getX(){ return x; } public void setX(int x){ this.x = x; } 但是这和那个有什么不同 …(shape.x)… // basically getX() 和 shape.x = 90; // basically setX() 如果制定者和获得者更好,你能否向我解释会出现什么样的实际问题?

什么是ECMAScript 6类中的getter和setter?

我很困惑,在ECMAScript 6类中,getter和setter是什么意思。 什么目的? 下面是我所指的一个例子: class Employee { constructor(name) { this._name = name; } doWork() { return `${this._name} is working`; } get name() { return this._name.toUpperCase(); } set name(newName){ if(newName){ this._name = newName; } } }

通过reflection调用getter的最佳方式

我需要获得具有特定注释的字段的值,所以通过reflection,我可以得到这个字段对象。 问题是,这个领域将永远是私人的,虽然我事先知道它总是有一个getter方法。 我知道我可以使用setAccesible(true)并获取它的值(当没有PermissionManager时),但我更喜欢调用它的getter方法。 我知道我可以通过查找“get + fieldName”来寻找方法(虽然我知道例如布尔字段有时被命名为“is + fieldName”)。 我想知道是否有更好的方法来调用这个getter(许多框架使用getters / setter来访问属性,所以也许他们以另一种方式)。 谢谢

简单的Getter / Setter注释

你用什么约定来评论吸气剂和吸附剂? 这是我想了很长一段时间,例如: /** * (1a) what do you put here? * @param salary (1b) what do you put here? */ public void setSalary(float salary); /* * (2a) what do you put here? * @return (2b) */ public float getSalary(); 我总是发现我写了1a / b和2a / b完全相同的东西,例如1a)设置员工的工资,1b)员工的工资。 这似乎是多余的。 现在我可以看到更复杂的东西,你可以在(a)部分写更多的东西来给出上下文,但是对于大部分的获取者/引导者来说,这些措辞几乎是完全相同的。 我只是好奇,对于简单的getter / setters来说,它只能填写(a)部分或(b)部分。 你怎么看?