.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

定義を忘れるためメモ。

詳細

恐らく前者(コードを対象としているという主張)が正しい。

コードを対象としているという主張

単に「コードを重複させない」という原則ではなく、

  • DBスキーマ、
  • テスト、
  • ビルドシステム、
  • ドキュメント

なども対象になっており、

「ソフトウェア開発全体において情報を重複させない」

という原則。

コードを対象としていないという主張

OAOO(Once and Only Once)

転じて、プログラムコード中で同じ(ような)動作をするコードを何度も書かずに、
一度書いたものを再利用するようにすべきとする意味で用いられることもあるが、
こちらは本来は“Once and Only Once”(OAOO)原則と呼ばれるものである。

クラス、オブジェクトに対する適用

  • DRY はオブジェクト・インスタンス(データ)に対して適用されるのに対して、
  • OAOO はクラス(コード)に対して適用される。

用例

2つのコンテキストがある。

標準化・共通化などによるコントロール

小規模なスクラップ・アンド・ビルド案件が、大規模化して維持・保守が必要になった場合に、
密結合なDryの状態で開発されていたら、標準化・共通化などによるコントロールが必要になった時点で、
対応できなくなるため、Open棟梁導入案件でも、案件毎に、更に追加のレイヤが追加される。

(オレオレ的な)共通化レイヤを構築したくない。

観測範囲で、Webやフリーランス界隈では、Dryが尊ばれている様に見えるが、
下記の「Dryで書いたものが負債になっていく。」という発言もあり、密結合のデメリットを理解する必要がある。

  • ≒ モジュール強度が強く、結合度が弱くなる境界で分割されていない。
  • ≒ デファクトなフレームワークの生のAPIを触りたい為、レイヤ分割を避けている。
    • フレームワークの生のAPIを触りたい。
    • 低品質な≒オレオレ的なレイヤを構築したくない(&触りたくない)。

参考

密結合のデメリットについての言及

  • @mizchiさんのツイート:
  • あなたはDRY原則を誤認している? - Qiita
    https://qiita.com/yatmsu/items/b4a84c4ae78fd67a364c
    • DRYは素晴らしい考えですが、やり過ぎると密結合を生んでしまう。密結合が進むと修正時に影響範囲が増えてしまうんですね。
    • ソフトウェア開発原則は他にも多数存在するわけで、それぞれコンテキストによって用法・容量を正しく守って使いましょうということでした。
  • DRY原則の利用: コードの重複と密結合の間
    https://www.infoq.com/jp/news/2012/05/DRY-code-duplication-coupling
    • DRYは重複とそれに伴うメンテナンスの問題を軽減するものだが、誤用すると密結合を生み、可読性を損うおそれがある。
    • 教訓:ソフトウェア開発原則は、ほかの原則やパターン、プラクティスを考慮して適用しなくてはならない。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-30 (火) 12:14:03 (13d)