OOソフトウェアの設計原理
-
10-09-2019 - |
質問
私の大ファンソフトウェアの設計原理など 固体 や ドライ.何がその原則が存在するOOソフトウェアのデザイン?
します。んな答えのように"コメントコード"ではなく宿○○デザインの原則のような議論 ボブおじさん.
解決
かなり包括的なリストからWikipedia:
http://en.wikipedia.org/wiki/List_of_software_development_philosophies
- アジャイルソフトウェア開発
- アジャイルまでの一貫した工程(AUP)
- 動作駆動開発(BDD)
- ビッグデザインフロント(BDUF)
- ブルックスの法則
- 大聖堂のバザール
- コードの修正
- Constructionistデザイン手法の研究(CDM)
- カウボーイコ
- 澄
- デザイン開発(D3)
- な繰り返し自分自身(ドライ)又は一度に一度だけ(OAOO)、シングルポイントの真実(スポット)
- 動的システム開発手法(DSDM)
- 極プログラミング(XP)
- 機能開発
- ハリウッドの原理
- 反復と増開発
- 共同アプリケーションデザイン、通称JADの"共同アプリの開発"
- カイゼン
- かんばん
- KISS原則として保管して、み)
- リソフトウェア開発
- Microsoft解の枠組み(MSF)
- モデル駆動型アーキテクチャー(MDA)
- オープンソース
- 開までの一貫した工程
- クイックや汚れ
- 合理的な統合プロセス(RUP)
- スクラム
- スマート(アジャイル開発)
- 分離の懸念(SoC)
- サービス指向モデリング
- ソフトウェアの職人技
- ソフトウェアシステムの安全性
- スパイラルモデル
- テスト駆動開発(TDD)
- までの一貫した工程(上)
- Vモデル
- 滝モデル
- ホイールやポークモデル
- 悪くない(ニュージャージースタイルと対照的に、MITのアプローチ)
- エクストリーム
- きゃないんで(YAGNI)
- ゼロワンの無限大
他のヒント
KISS の
は、継承の上に組成物を選んだものである。
多くの人々、OOに新しい特に彼らは本当にために必要なすべての組成物を使用するときにクラスを拡張開始します。あなたはあなたの自己を問う必要がある場合は、本当に、新しいクラスBクラスAがありますか?ないなら、あなたは拡張してはいけません。
たとえば、のは、私はPerson
クラス、Car
クラスを持っている、と私はDrivenCar
クラスと呼ばれる新しいクラスを作成したいとしましょう。素朴な実装では、(我々は多重継承を得たふりをしましょう)と言うことであろう。
class DrivenCar extends Person, Car { ... }
DrivenCarは、タイプの人ですか?いいえそれは人を延長しないべきではありません。 DrivenCarは車ですか?はいそれは
を拡張するために理にかなっていますimplmentationは、
のようになり組成物を用いて、class DrivenCar extends Car {
private Person driver;
}
GRASP のパターン。はい、彼らはむしろ些細なようです。その他の蒸留のような他の、より複雑なパターンが示すコア品質にダウンます。
インタフェース。ほとんどのデザインパターンは、インタフェースと実装の分離に基づいています。
あなたのAPIは、成長の代わりにインターフェイスの抽象クラスを使用することが期待されている場合。インタフェースの新しいメソッドを追加すると、それを実装するすべてのクラスを変更する必要があります。