在类方法中使用getter

And*_*ite 19 getter

如果你有一个带有一些普通get/set属性的类,是否有理由在类方法中使用getter,或者你应该只使用私有成员变量?我认为可能会有更多关于setter的争论(验证逻辑?),但我想知道getter.

例如(在Java中) - 是否有任何理由使用选项2?:

public class Something
{
    private int messageId;
    public int getMessageId() { return this.messageId; }
    public void setMessage(int messageId) { this.messageId = messageId; }

    public void doSomething()
    {
        // Option 1:
        doSomethingWithMessageId(messageId);

        // Option 2:
        doSomethingWithMessageId(getMessageId());
    }
}
Run Code Online (Sandbox Code Playgroud)

kro*_*old 9

Java程序员通常对使用getter方法非常一致.我编写了多种语言,但我并不是那么一致;)

我会说只要你不做一个getter就可以使用原始变量 - 对于私有变量.当你做一个吸气剂时,你应该只使用它.当我为私有字段制作一个getter时,我的IDE建议它在我引入getter时自动替换原始字段访问.切换到使用getter只需几次击键(并且没有任何引入错误的机会),所以我倾向于延迟它直到我需要它.

当然,如果你想要像getter-injection,某些类型的代理和子类化framworks,如hibernate,你必须使用getter!


Ant*_*ima 7

使用getter你不会意外地修改变量:)另外,如果你同时使用getter和"raw"变量,你的代码可能会混淆.

此外,如果您使用继承并重新定义子类中的getter方法,则使用getter的方法将正常工作,而使用原始变量的方法则不会.