ワークスペースの概念を実装したい。これはグローバルな概念です。他のすべてのコードは、このワークスペースの 1 つのインスタンスとやり取りします。ワークスペースは、現在のシステム状態を維持する責任があります (つまり、システム モデルとの対話、システム状態の永続化など)。
では、私のワークスペースに最適な設計戦略は何でしょうか。これはテスト可能でなければならないことを念頭に置いてください (現在は RSpec を使用していますが、代替案を喜んで検討しています)。
いくつかのオープン ソース プロジェクトを読んで、3 つの戦略を見てきました。どれも「ベストプラクティス」とは言えません。
彼らです:
singleton
クラスを含めます。しかし、これはどの程度テスト可能ですか? ワークスペースの全体的な状態はテスト間で変化しますか?- すべての動作をクラス メソッドとして実装しました。繰り返しますが、これをどのようにテストしますか?
- すべての動作をモジュール メソッドとして実装しました。これについてはまったくわかりません!
どれが最高ですか?それとも別の方法がありますか?
ありがとう、ゴードン
編集
すべてのコードに 'singleton' モジュールを含め始めたとき、コードを作成したときに、これらのグローバル インスタンスへの参照がいたるところにあることで、自分のコードがどれほど密接に結合されているかを実感しました。
そのため、それらを完全に削除し、代わりにグローバル インスタンスへの参照を渡し始めました。しかし今、私は IOC の道を進んでいます - 私のコンストラクタを通して依存関係を渡します。
これはRubyで良いアイデアですか?または、何か不足していますか?
ところで、あなたが集めたかもしれない私は Ruby の初心者です!