相关疑难解决方法(0)

在类方法中使用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)

getter

19
推荐指数
2
解决办法
5018
查看次数

什么时候应该使用自己的getter/setter来直接访问成员?

在Eclipse中生成setter和getter时,其中一个选项是使用类中的getter和setter而不是直接访问类成员.这种级别的内部封装是否有用,或者它是一个好主意,一步到位?

DUPE:你应该在课堂上使用访问者属性,还是只从课堂外使用?

oop encapsulation

13
推荐指数
1
解决办法
1739
查看次数

是否更好地使用getter方法或在覆盖toString时直接访问私有字段?

我已经看到这两种方法都被使用过,但是从来没有听说过任何一种方式因为任何特殊原因而优先于其他方式.

public String toString() {
  return this.field1 + " " + this.field2;
}
Run Code Online (Sandbox Code Playgroud)

public String toString() {
  return getField1() + " " + getField2();
}
Run Code Online (Sandbox Code Playgroud)

我在我的例子中使用String连接来保持代码简洁.

java tostring

6
推荐指数
1
解决办法
2424
查看次数

在类中为自己的字段使用getter/setter有什么好处吗?

通常,在我自己的项目中,我使用getter和setter进行任何字段访问,然后我按照我的工作做同样的事情.前段时间,我们项目的技术负责人问我为什么这样做,为什么这比仅仅使用字段本身更好(如果需要通过子类访问,可以选择声明它们受保护).我无法得出一个明确的答案.

那么,是否有任何理由在类的自己的字段中使用getter和setter,或者直接使用字段是否更好?

java

6
推荐指数
2
解决办法
2126
查看次数

在Ruby中访问对象中的实例变量的常规方法是什么?

请考虑以下代码:

class Dog
  attr_accessor :name, :color

  def initialize(name, color)
  end
end
Run Code Online (Sandbox Code Playgroud)

在Ruby对象中,是直接访问实例变量(即@name = name)还是使用setter/getter方法(即name = name)的约定?

前者对我来说更清楚,但如果你实现自己的setter/getter方法(例如同时增加一个类变量),那么你最终必须使用两种方法(即@name = name ; color = color).

Ruby社区中的惯例是什么?我应该如何编写代码以便将其他人阅读?

ruby conventions instance-variables

1
推荐指数
1
解决办法
572
查看次数