我正在使用一个通过实例变量传递状态的类型.所以你会看到这样的方法:
public MyType MyMethod()
{
DoThisMethod();
DoThatMethod();
AndDoThis();
return _bleh;
}
Run Code Online (Sandbox Code Playgroud)
这是公认的方法吗?
使用此代码有点令人不安,因为如果您不完全理解代码,实例变量可能会在您不知情的情况下通过其他方法进行转换.如果通过方法参数传递状态,那么您可以对传入的参数的值非常有信心.
如果这些方法调用的顺序很重要,我会称之为"错误编程" - 正如您所说的,任何需要较早调用的方法都应该使用指示这一点的方法参数.
我非常确定Code Complete提供了一些很好的例子.
基本上类似于以下内容,其中每个方法都需要先前的调用结果.
public MyType MyMethod()
{
thisResult = DoThisMethod();
thatResult = DoThatMethod(thisResult);
_bleh = AndDoThis(thatResult );
return _bleh;
}
Run Code Online (Sandbox Code Playgroud)
其次,我喜欢尽可能保持方法"正交"(即它们仅取决于您提供它们的状态等).有关Orthogonal Code的精彩摘要,请参阅此文章.