在构建类时,我的经验法则一直是传递参数,除非调用者无法访问它们。例如,我总是喜欢这个:
class Foo
{
private FooData _data;
public Foo(FooData data) { _data = data; }
public string GetSomeValue()
{
var result = ProcessData(_data);
return result;
}
private static string ProcessData(FooData data)
{
// do something with data and return the result
}
}
通过这个:
class Foo
{
private FooData _data;
public Foo(FooData data) { _data = data; }
public string GetSomeValue()
{
var result = ProcessData();
return result;
}
private string ProcessData()
{
// do something with _data and return the result
}
}
我在野外多次遇到第二个例子,我从来没有找到一个好理由。 访问实例变量与使用方法参数有什么好处和缺点?
更新:我意识到这个问题的一些答案可能是以意见为基础的,但我正在寻找一种方法可以做的事情,而另一种方法则不能这样我可以形成自己的意见何时使用每一个。
例如:
答案 0 :(得分:2)
对于更喜欢不带参数的实例方法的综合论据,请参阅Robert C. Martin的Clean Code。在 Smells and Heuristics 章节中,他明确地浓缩了启发式:
F1:参数太多
函数应该包含少量参数。没有争论是最好的,其次是一,二,三。
(我的副本中的页面288。)