私は2つの重要な機能を持つ1つのクラスを持っている:クラスでの呼び出しの順序が重要な場合のベストプラクティス
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()
に電話してはいけないという問題があります。そうした場合、結果は真の結果ではありません。私は呼び出しの順序が重要であることを意味します。これはコードを維持する際の問題です(新しいものがチームに追加されたとき)。
これを管理する方法はありますか?
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*/
}
:
は、私はそれがDoSomeThing()
とSaveSomething()
コードの変更に設定されているbool
を持つDoSomeThing()
前に呼び出された場合
- が
SaveSomething()
に例外をスロー以下のように3つの方法を考えます それを実現するような流暢:
この場合、Foo x = new Foo(); x.DoSomeThing().SaveSomething();
、起こるされていないことを保証することが重要です。
x.SaveSomething().DoSomeThing();
を今、私は第二の方法を使用します。何か良い方法があるのか、それとも十分ですか?
それは完全ではないので、これは、実際にコードレビューはありません。これは設計上の問題なので、Stack Overflowに投稿したいと思うかもしれません。 –
@ S.Lottはい、そうですが、ここでは完全なコードではないと思います。私は完全なコードを新しい質問として投稿し、ここで2つまたは3つの答えを述べると、より多くのコードレビューを感じる。ところで、この質問は、([リンク]に関連するhttp://codereview.stackexchange.com/questions/5201/best-design-pattern-for-refactoring-a-set-of-classes-that-do-calculation-base -に)。最初の打ち上げから1.5年後にすべてのチームメンバーが新しい(このプロジェクトではプログラミングではなく)! –
コードレビューは完全なコードです。すべての設計の決定後。これは「レビュー」が意味することです。つまり、すべての作業が作成された後に作成されることを意味します。デザインの問題はStack Overflowになります。 –