Hatena::ブログ(Diary)

kazuhoのメモ置き場

2014-02-20

DRY(don't repeat yourself)するかしないか、その判断基準について

「過剰なDRYが技術的負債を生む」みたいな内容の記事を書きたいが、うまく言語化できない。「過剰な食事制限が健康を損なう」程度の内容に成り下がりそうだけど、そんなんじゃないんだよ…

@methane 実装におけるDRYみたいなものを考えていて、そうすると前者のDRYというのがどこに位置づけられるかはわからないんですが、とにかく暗黙知みたいなものを過剰に増やすDRYは良くないよね、というような話なんです

という@moriyoshitさんのツイート1, 2)を見かけたので、僕の考え方をコメント。moriyoshitさんの考えたい問題とは、ずれてるかも。


DRY化の功罪とは何か?

僕の理解で言うと、共通するコード片をDRY化することには以下の変化をもたらす。

過剰なDRY化が行われる背景としては、第2点の議論が見落とされがちなんじゃないか、と思ってる。


ではどうすべきか?

上記の3点より、

  • 関数内の複雑度の低下によるメリットが、コールグラフの複雑度の上昇によるデメリットを上回る場合のみ、DRY化を行う
  • モジュール間の複雑性上昇を抑えるため、DRY化はできるだけ局所的に行う*2

を基本的な指針にしています。

*1:もしくはより結合度が高まる

*2:つまり、まずは関数内での子関数定義であったり、モジュール内に閉じた関数としてDRY化を実装することを考える

animal jamanimal jam 2017/06/14 12:46 The blog or and best that is extremely useful to keep I can share the ideas of the future as this is really what I was looking for, I am very comfortable and pleased to come here. Thank you very much.
<a href="http://animaljam-2.com/">animal jam </a> | <a href="http://fivenightsatfreddys-2.com/five-nights-at-freddys/">five nights at freddy's</a> | <a href="http://hotmailemaillogin.net">hotmail login</a>

hotmail0909hotmail0909 2018/06/06 17:10 Do you have a spam issue on this website; I also am a blogger, and I was wondering your situation; we have created some nice methods and we are looking to exchange methods with others, why not shoot me an e-mail if interested.

product keyproduct key 2018/06/08 18:46 Good article, thanks for sharing.

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kazuhooku/20140220/1392866299