我有一个类有两个重要的功能:
public class Foo { //plenty of properties here void DoSomeThing(){/*code to calculate results*/} void SaveSomething(){/* code to save the results in DB*/} }
SaveSomething()使用在DoSomeThing()中计算的结果.
问题是我们不要在DoSomeThing()之前调用SaveSomething(),或者如果发生这种情况,结果不是真的结果.我的意思是调用顺序很重要,这是维护代码的一个问题(当新的添加到团队时).
有什么办法来管理这个吗?
我想到3种方法如下
>在SaveSomething()中抛出异常(如果在DoSomeThing()之前调用)
>在DoSomeThing()和SaveSomething()中设置一个bool,代码更改为:
bool resultsAreCalculated = false; void SaveSomething(){ if (!resultsAreCalculated) { DoSomeThing(); // the resultsAreCalculated = true; is set in DoSomeThing(); // can we throw some exception? } /* code to save the results in DB*/ }
>实现它流利的喜欢:
Foo x = new Foo(); x.DoSomeThing().SaveSomething();
在这种情况下,保证不会发生这一点很重要:
x.SaveSomething().DoSomeThing();