示例:
// access fields directly
private void doThis()
{
return doSomeWork(this.data);
}
// receive data as an argument
private void doThis(data)
{
return doSomeWork(data);
}
第一个选项与this.data中的值相关联,而第二个选项避免了这种耦合。我觉得第二种选择总是更好。它促进了课堂上松散的耦合。无处不在地访问全球类数据似乎是一个坏主意。显然,这个类数据需要在某个时刻直接访问。但是,如果访问,通过参数传递可以消除对这个全局类数据的看法,这似乎总是更好。
第二个例子的优点是可以使用任何正确类型的数据,而第一个例子必须使用正则类数据。即使你不需要额外的灵活性,把它作为一种选择似乎也很好。
我没有看到直接从私有方法访问成员数据的任何优势,如第一个示例中所示。什么是最好的做法?我引用了代码完整,但无法在此特定问题上找到任何内容。
答案 0 :(得分:3)
如果数据是对象状态的一部分,则private / protected就可以了。选项1 - 好。
我注意到一些开发人员喜欢创建私有/受保护的变量,只是为了在类中的方法之间传递参数,这样他们就必须在方法调用中传递它们。它们并不是真正存储对象的模型/状态。 ......然后,选项1 - 不好。
为什么选项1在这种情况下不好......
答案 1 :(得分:2)
在课堂上全球数据不是问题恕我直言。类用于耦合状态,行为和身份。所以这种耦合不是问题。该论点表明,您可以使用来自其他对象的数据调用该方法,甚至可以使用其他类来调用该方法,我认为应该比在类内部进行耦合更加考虑。
答案 2 :(得分:1)
它们都是实例方法,因此#1更有意义,除非你遇到涉及线程的情况(但是根据语言和场景,即使这样你也可以简单地将数据方法锁定/标记为同步 - 我的Java知识生锈了)。
第二种技术更像是程序编程。