2011-07-04 13 views
1

私はいくつかのメソッドを特定の順序で呼び出す必要があるクラスを持っています。これらのメソッドが順不同で呼び出された場合、オブジェクトは正しく機能しなくなります。メソッドには、オブジェクトが有効な状態にあることを確認するためのアサーションがいくつかあります。これらのメソッドを特定の順序で呼び出す必要があるコードを読み取るために、次の人と通信するために使用する命名規則特定の順序で呼び出さなければならないメソッドの命名規則

これを1つの巨大な方法に変えることは可能ですが、巨大な方法は問題を作成するのに最適です。 (このシーケンスをトリガーできる方法は2つありますので、1つの巨大なメソッドでも重複が発生します)。

メソッドを順番に呼び出す必要があるがコメントはそれほど有用ではないことを説明するコメントを書くことができます明確な名前のメソッド。

提案がありますか?

答えて

4

最初の関数の状態が2番目の関数のパラメータとして渡されるため、(少なくとも一部の)リファクタリングが可能ですか?回避することは不可能ですか?

それ以外の場合は、コメントとアサートがあれば、かなりうまくいっています。

しかし、「これを1つの巨大なメソッドにすることは可能です」ということは、外部コードのように、中間的な状態には何らアクセスする必要がないように思えます。そうであれば、いくつかのプライベートメソッドを連続して呼び出すpublicメソッドを作るだけではどうですか?完璧ではないですが、順序がその一つの機能に集中化された場合、それは彼らが来る必要がありますどのような順序見るためにかなり簡単です

FroblicateWeazel() { 
    // Need to be in this order: 
    FroblicateWeazel_Init(); 
    FroblicateWeazel_PerformCals(); 
    FroblicateWeazel_OutputCalcs(); 
    FroblicateWeazel_Cleanup(); 
} 

0

メッセージダイジェストと暗号化/復号化ルーチンがしばしばありますような何か。 _init()の設定方法、新しいデータを追加する_update()_final()を使用して最終的な結果を返し、再び破棄します。

関連する問題