繰り返さないでください

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

繰り返さないでください」(DRY)は、ソフトウェアパターンの繰り返しを減らすことを目的としたソフトウェア開発の原則であり、 [1]抽象化に置き換えるか、データの正規化を使用して冗長性を回避します。

DRYの原則は、「すべての知識は、システム内で単一の、明確で、信頼できる表現を持たなければならない」と述べられています。この原則は、AndyHuntとDaveThomasの著書ThePragmaticProgrammerで定式化ます[2]彼らはそれを非常に広く適用して、「データベーススキーマテストプランビルドシステム、さらにはドキュメント」を含めます。[3] DRYの原則が正常に適用されると、システムの単一の要素を変更しても、論理的に無関係な他の要素を変更する必要はありません。さらに、論理的に関連する要素はすべて予測可能かつ均一に変化するため、同期が保たれます。ThomasとHuntは、コードでメソッドサブルーチンを使用するだけでなく、コードジェネレーター、自動ビルドシステム、およびスクリプト言語を使用して、レイヤー全体でDRYの原則を順守しています。

代替案

ウェット

DRYとは反対の見方は、WETと呼ばれます。これは、「すべてを2回書く」[4](または、「毎回書く」、「タイピングを楽しむ」、「みんなの時間を無駄にする」)を表すために一般的に使用されるバクロニムです。WETソリューションは、開発者がWebアプリケーションのフォームにコメントフィールドを追加するなどのタスクを実行できる多層アーキテクチャで一般的です。テキスト文字列「comment」は、ラベル、HTMLタグ、読み取り関数名、プライベート変数、データベースDDL、クエリなどで繰り返される場合があります。DRYアプローチは、最も重要なものを除くすべての編集タスクを削減または排除するフレームワークを使用することでその冗長性を排除し、新しい知識変数を1か所に追加する拡張性を残します。[5] Kevin Greerは、このプログラミング原理に名前を付けて説明しました。[6] [7]

AHA

抽象化への別のアプローチは、AHAの原則です。AHAは「急いで抽象化を回避する」の略で、 Kent C. Doddsは、最初に変更を最適化し、時期尚早の最適化を回避すると説明しています。[8]そして、 SandiMetzの「間違った抽象化よりも複製を好む」ことに影響を受けました。[9]

AHAは、ソフトウェアの抽象化に投資を深めるほど、その投資のコストを回収できないと認識しているという理解に根ざしています(埋没費用の誤謬)。したがって、エンジニアは、要件が変更されるたびに同じ抽象化を繰り返し続ける傾向があります。AHAプログラミングは、WETソリューションとDRYソリューションの両方が、堅固で保守が難しいソフトウェアを必然的に作成することを前提としています。抽象化から開始したり、特定の数の複製で抽象化したりする代わりに、必要なときに抽象化を行う場合、または複製自体が障壁になり、抽象化がどのように必要であるかがわかっている場合、ソフトウェアはより柔軟で堅牢になります。機能する。

AHAプログラミングは元々DoddsによってMOISTと名付けられ、後に再びDaniel Bartholomaeによって[10]、MattRyerによって元々DAMPと呼ばれていました。[11]すでにDAMPと名付けられ、Jay Fieldsによって記述された別のプログラミング原理があり[12]、「湿った」という言葉に対する文化的な嫌悪感のために、コミュニティはMOISTの使用に反対しました。[13] DoddsはTwitterで代替案を求め、 Cher ScarlettのAHAの提案に落ち着く前に、代替案としてDATEを提案しました。[8] [14] [15]

も参照してください

参照

  1. ^ Foote、Steven(2014)。プログラムを学ぶアディソン-ウェスリープロフェッショナル。p。336. ISBN 9780133795226
  2. ^ ハント、アンドリュー; トーマス、デビッド(1999)。実用的なプログラマー:ジャーニーマンからマスターへ(1版)。アメリカ:アディソン-ウェスリー。pp.320  _ ISBN 978-0201616224
  3. ^ Dave Thomas、Bill Venners(2003-10-10)によるインタビュー。「直交性とDRY原理」2006年12月1日取得
  4. ^ パイ、プラシード; ザビエル、シャイン(2017-01-31)。.NETデザインパターンPackt Publishing Ltd. ISBN 978-1-78646-186-5
  5. ^ ジャスティンリー(2006-03-08)。「DRYは敗者のためのものです」2013年8月31日取得
  6. ^ Alex Papadimoulis(2011-12-08)。「ウェットカート」2012年5月21日取得
  7. ^ ケビングリア(2016-02-05)。「FOAMDRY+WET」YouTube2021年12月21日にオリジナルからアーカイブされました2016年3月9日取得
  8. ^ a b Kent C. Dodds(2019-04-01)。「AHAプログラミング」2021-05-08を取得
  9. ^ サンディメッツ(2016-01-20)。「間違った抽象化」2021-05-08を取得
  10. ^ バルトロマエ、ダニエル(2020年8月21日)。「湿ったコード-コードを完全に乾かしてはいけない理由」スタートアップCTO 2021年11月11日取得
  11. ^ Haus、Ev(2020年12月24日)。「DRY、WET、およびDAMPコードの使用」ミディアム2021年11月11日取得
  12. ^ フィールド、ジェイ。「DRYコード、DAMPDSL」ジェイフィールズの考え2021年11月11日取得
  13. ^ Resnick、ブライアン(2016年4月28日)。「なぜそんなに多くの人が「しっとり」という言葉を嫌うのですか?この科学者には理論があります」VoxMedia 2021年11月11日取得
  14. ^ Dodds、ケント(2021年3月27日)。「ケントとの3分間:最初にコードを記述し、次に抽象化を行います」ブリーフ2021年11月11日取得
  15. ^ Dodds、ケント; ボスティアン、エマ; ニシ、ニック(2021年7月30日)。「JSパーティー–エピソード#186:Reactに夢中になる」変更ログ2021年11月11日取得

外部リンク