クラスの設計を行うとき、あなたは一般的にどのような原則に従いますか?
12 に答える
オブジェクト指向クラス設計の原則(「SOLID」の原則)
- SRP:単一責任の原則クラスには、変更する理由が1つだけある必要があります。
- OCP:オープンクローズド原則クラスの動作を変更せずに拡張できるはずです。
- LSP:リスコフの置換原則派生クラスは、基本クラスの代わりに使用できる必要があります。
- ISP:インターフェイス分離の原則クライアント固有のきめ細かいインターフェイスを作成します。
- DIP:依存性逆転の原則 は、具体化ではなく、抽象化に依存します。
出典: http: //butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
ビデオ(ボブおじさん):ロバートC.マーチン(ボブおじさん)によるクリーンコーディング
デメテルの法則を忘れないでください。
SOLIDの原則。
または、少なくとも私は彼らから離れすぎないようにしています。
最も基本的な設計パターンは KISS でなければなりません (単純に馬鹿にしてください)。これは、一部の要素にクラスをまったく使用しないことが正しい解決策である場合があることを意味します。
それとCRC(クラス、責任、協力者)カード(ドキュメントも理解しやすいので、実際のカードではなく、ヘッダーファイルにカードを書き留めます)
前述のように、基本的なオブジェクト指向設計の原則には、OCP、LSP、DIP、および ISP があります。
Robert C. Martin (Object Mentor の) によるこれらの優れた概要は、ここから入手できます: OOD Principles and Patterns
「ResourceAcquisitionIsInitialization」パラダイムは、特にC ++で記述し、オペレーティングシステムリソース(ファイルハンドル、ポートなど)を処理する場合に便利です。
このアプローチの主な利点は、作成されたオブジェクトが「完全」であるということです。つまり、2フェーズの初期化の必要がなく、オブジェクトが部分的に初期化される可能性もありません。
ゆるく結合され、非常にまとまりがあります。
継承をめぐる構成。
ドメイン駆動設計は、一般的に従うべき良い原則です。
基本的に、私はインターフェイスへのプログラミングを回避します。コードの重複を避け、コードを(私の脳にとって)扱いやすいチャンクに分離するために、ケースごとに変化するものをカプセル化しようとします。後で必要に応じて、コードを簡単にリファクタリングできます。
SOLID 原則と Liskov のパターン、および単一責任パターン。
私は通常、クラスをooデザインパターンの1つに適合させようとします。