web-dev-qa-db-ja.com

モジュール設計を使用しない理由はありますか?

エンジニアリングは通常、どのソリューションが問題に最も適しているかを知る技術です。 シングルトンクラスを使用する必要がありますか?すべてのデータベースにビューとトリガーが必要ですか?最大のものは何ですかPHP framework?C++ですか、それとも上手ですか?、またはRSAまたはAESの方が安全ですか依存する... "

しかし、「モジュール設計を使用する必要がありますか?」という質問が目立ちます-「絶対に

私の経験では、モジュラー設計を疑ったことはありません。私が作成するソフトウェアは、レゴブロックのようにアセンブル、組み立て、および交換可能である必要があります(もちろん、レンガを定義した後)。どんな言語でも、どんな機械でも、どんな目的でも。したがって、モジュラー設計を使用する必要があるかどうかを尋ねるとき、「依存する」とはまだ言いません。

ソフトウェアエンジニアリングのほぼすべての他の側面には、それを適用できるテイクギブインデックスがあります。モジュラーデザイン(これまでのところ)は、常に与えられています。これは私を怖がらせ、私は常に誰もがモジュラー設計を使用しない理由を常に模索しています。つまり、すべてのコードが一緒に接着され、機能的に可変長であり、拡張性が制限されており、エラーの分離可能性がないような方法でプログラムを作成すると、自動的にあなたは悪いプログラマーですか?怠惰以外にそのような方法でコーディングする理由はありますか?彼らがプロジェクトを設計する他の方法はありますか?それとも、モジュラーは上記のすべてを、100%議論の余地のない正しい方法(呼吸のように)で設計していますか?

6

モジュラー設計は、設計ヒューリスティックとして(重要ではない認知的)努力を必要としますが、その利点は戻ってきます

  • 複雑さの管理
  • 長期メンテナンスの簡素化、
  • 再利用を促進し、
  • 等.

したがって、それらのいずれも気にしないプロジェクトは、モジュール設計が無駄になるプロジェクトになります。これは、非常に小さなシステムについて言及する Thomas Kilianの回答 に似ています。

類推のために、IKEAの家具とそれに入るすべてのモジュール式設計の取り組みについて考えてください。次に、1晩のお祝いのためにゲストに食べ物を出すためのテーブルが必要かどうかを自問します。問題を解決するために、あなたが自由に使えるものから何かをハッキングします(子供たちはこれを非常にうまく行います!)。この目的のために新しいIKEAのようなテーブル(モジュラーパーツを使用)を設計することは、1泊のパーティーにとってはやりすぎです。

私はニールフォードのデザインのスペクトルが好きです。モジュラーデザイン(私がこれを見る方法)は、「カウボーイハッキング」の極限では存在しません。

http://www.slideshare.net/ThoughtWorks/neal-ford-emergent-design-and-evolutionary-architecture

2
Fuhrmanator

非モジュール式設計とは何ですか?私にとってはモノリシックなデザインでしょう。これらは非常に小さなシステムで利点があります。ここで、あらゆる種類のリソースが制限されます。それは、メモリ、CPU、またはコーダーが作成に費やすことができる時間です。モノリシックデザインは、1つのピース(またはより具体的にはNED)で把握できます。このようにして、全体像を把握します。しかし、繰り返しになりますが、全体像を把握する必要があります。したがって、システムが小さい限り、これは実現可能です。特定のサイズから始めて、モジュール設計が間違いなく必要です。象を食べるルール1:スライスして食べる。

8
qwerty_so