私は最近、関数型プログラミングで遊んでいますが、副作用、なぜそれらを封じ込めるべきかなどのトピックについてはかなり良い治療法があります.OOPが使用されているプロジェクトでは、いくつかの戦略をレイアウトするリソースを探しています副作用および/または状態を最小限に抑えます。
これの良い例は、Web アプリケーションの状態を最小化するための戦略を提供する本RESTful Web Servicesです。他にどんな存在?
別の OOP アナリスト/デザイン パターンの本を探しているのではないことを思い出してください (ただし、適切なカプセル化と疎結合は副作用を回避するのに役立ちます) むしろ、トピック自体が状態/副作用であるリソースを探しています。
いくつかのコンパイルされた回答
- 主に状態を気にする OOP プログラマーは、並行性のためにそうするので、Java Concurrency in Practice を読んでください。[まさに私が探していたもの]
- TDD を使用して、副作用をより目立たせます[私はそれが好きです。例: セットアップが大きくなればなるほど、テストを実行するために必要な状態が増えます = 良い警告です]
- コマンドとクエリの分離 [良いことです。関数の引数を変更することによる、一般的に混乱を招く副作用を防ぎます]
- メソッドが行うことは 1 つだけです。オブジェクトの状態を変更する場合は、わかりやすい名前を使用して単純明快にします。
- オブジェクトを不変にする [私はこれが本当に好き]
- 値をメンバー変数に格納するのではなく、パラメーターとして渡します。[これはリンクしません。それは関数プロトタイプを乱雑にし、Clean Code や他の本によって積極的に落胆させられていますが、状態の問題に役立つことは認めます]
- 値を保存して更新する代わりに、値を再計算します[これもとても気に入っています。私が取り組んでいるアプリでは、パフォーマンスは小さな問題です]
- 同様に、回避できる場合は状態をコピーしないでください。1 つのオブジェクトにそれを保持する責任を持たせ、他の人がそこにアクセスできるようにします。[基本的な OOP 原則、良いアドバイス]