重複の可能性:
関数/プロシージャ/メソッドには何行のコードが必要ですか?
Outチームには、適切に構造化されていないansi-cコードのプロジェクトがあります。いくつかのCC手法を使用して、コードベースを整理したいと思います。
Cコードに関しては、多くのポインターと、キャッチすべきNULLポインターの落とし穴がたくさんあります。したがって、似ているフラグメントがたくさんあります。まるで
if (pointer == NULL)
{
function1();
function2();
}
あらゆる所に。次に、いくつかのバリエーションだけで同じ方法で次々に呼び出される関数が非常にたくさんあります。
function1();
function2a();
function3();
と
function1();
function2b();
function3();
あらゆる所に。
LOCとコピー貼り付けを減らすために、これらのブロックを単一の関数として抽出したいと思います。しかし、それは(ある程度)直交するレイヤーを作成するだけでなく、いくつかの詳細を除いて、多かれ少なかれ同じことを行う一握りの機能も作成します。さらに悪いことに、それは一度に多くのことを行う関数を作成します。
それで、良い戦略は何ですか?より重要なのは、高レベルのリーンコード、低レベルのリーン関数、またはリーンアーキテクチャですか?どちらの原則が他の原則に勝っていますか?懸念の分離またはDRY?
その獣をリファクタリングしたいのですが、どこから始めればよいのかわかりません。
以下の例を説明し、同じ名前を入れます。
morningBath();
drinkCoffee();
if (checkMail())
{
answerMail();
}
そしてそれをmorningRoutine()に入れます。今、私たちは持っています
drinkTea();
morningBath();
if (checkMail())
{
answerMail();
}
そしてそれをsundayMorningRoutine()と呼びます。しかし、重複したコードがあります。または、morningRoutine(day)を次のように展開します
if (day == sunday){
drinkTea();
morningBath();
} else {
morningBath();
drinkCoffee();
}
if (checkMail())
{
answerMail();
}
または多分
if (day == sunday){
drink(Tea);
morningBath();
} else {
morningBath();
drink(Coffee);
}
if (checkMail())
{
answerMail();
}
それは良いスタイルかしら..多分..そのヒントをありがとう!