3つのルールで3回目まで待つ理由は?


16

ウィキペディアの記事「ルールオブスリー」に出会いました

3つのルールは、コードの複製された部分を新しいプロシージャに置き換える必要があるかどうかを判断するための、コードリファクタリングの経験則です。コードは1回コピーできますが、同じコードを3回使用すると、新しいプロシージャに抽出する必要があると記載されています。ルールは、リファクタリングでマーティン・ファウラーによって導入され、ドン・ロバーツに起因します。

これは単なる経験則であることは知っていますが、2回目の複製後にのみリファクタリングすることが推奨されるのはなぜですか?最初の複製を作成するときに、リファクタリングにマイナス面はありますか?


2
別の視点のセットについては、2は不可能な数であり、ゼロ1無限ルール」を参照してください。
AakashM

ソフトウェア開発について話すとき、元の Wikiは多くの場合、Wikipediaよりもはるかに優れたソースです。結局のところ、Ward Cunningham ソフトウェア開発について話す手段としてWikiを発明しました。参照してくださいC2.Com/cgi/wiki?RuleOfThree
イェルクWミッターク

2
再利用のシナリオが2つある場合、ロジックを簡単に分岐できます(他の場合)。3つの可能なパスに到達すると、複製および保守よりもリファクタリングが容易になります。
アンドリュールイス


実際にリファクタリングして一般化できるコピーペーストの便利な口実だと思います。3番目のケースを取得したら、さらに一般化できます。
アレクセイ

回答:


17

この経験則は、初めてコードを設計するとき、または最初の複製後に「What if ...」をプレイするのは簡単だからだと思います。人々が後で必要になるかもしれない機能の設計を始めたので、私はいくつかのケースで厳しい分析麻痺に遭遇しました。しかし、当面の問題には必要ありません。

コードを将来のリファクタリングに対応させながら、必要なものだけを設計/作成するための技術があります。


8
それは良い点です。私の経験では、3番目のコピーを作成することで、2つのコピーよりもそれらの共通点と相違点が少し鋭くなります。
ダニエルB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.