2

通常、私は多くのプライベート関数を介してクラス (C#、C++) を実装します。これらの関数は、読みやすさ、保守性、およびスコープのために懸念事項とロジックを分離する以外の目的はありません。たとえば、100 行の長さの関数に 3 つのコメントが含まれていて、それを仮想の 1/3 セクション チャンクに分割している場合、それは私にとって 3 つの関数です。そのため、その大きな関数を 3 つの小さな関数に分割し、元の関数は 3 つの関数のみを呼び出します。

このパラダイムの名前がわかりません。最初は関数型プログラミングかモジュール型プログラミングかと思ったのですが、そうではないようです。このパラダイムが何と呼ばれているかを理解するのを手伝ってくれる人はいますか? さらに、この正確なユース ケースについて説明しているウィキペディアの記事へのリンクを読むことができれば、すばらしいでしょう (もちろん、パラダイムの名前を教えていただければ、自分で簡単に調べることができます)。

前もって感謝します。

4

5 に答える 5

1

特大のメソッドで既存のコードから新しい、より小さなメソッドを作成する実際のリファクタリング手法は、Extractメソッドと呼ばれます。

元のコード

void printOwing() {
    printBanner();

    //print details
    System.out.println ("name:  " + _name);
    System.out.println ("amount " + getOutstanding());
}

抽出メソッドを実行した後

void printOwing() {
    printBanner();
    printDetails(getOutstanding());
}

void printDetails (double outstanding) {
    System.out.println ("name:  " + _name);
    System.out.println ("amount " + outstanding);
}

メソッドから引き出そうとしているコードがそもそもクラスに属していない場合は、同様にExtractClassを使用できます

業界有数のソフトウェア職人の1人であるMartinFowlerが、ここで見つけることができるリファクタリングの概念に関する素晴らしい本を書きました。この本は、あなたがこれまでに必要とするリファクタリングの大部分に取り組むための段階的なレシピをあなたに与えるでしょう。

また、JetBrainsは、いくつかの非常に優れたリファクタリングツールが組み込まれているほとんどすべての言語に対応する非常に優れたIDEを作成します。また、同じ機能と利点のいくつかを提供するReSharperと呼ばれるVisualStudio用のプラグインもあります。

于 2011-10-20T16:15:59.243 に答える
1

リファクタリングとは、動作を変更せずにコードを変更することです。コードを複数のメソッドに分割することを、メソッドへのリファクタリングと呼びます。これらのメソッドを取り、それらの動作を多くのクラスに入れると(オブジェクト/クラスごとに単一の責任を維持するのに役立ちます)、それはオブジェクトへのリファクタリング と呼ばれます。

于 2011-05-31T18:34:18.757 に答える
1

基本的には「リファクタリング」です。

http://en.wikipedia.org/wiki/Code_refactoring

于 2011-05-31T18:32:18.910 に答える
0

この作業はリファクタリングと呼ばれます。

リファクタリングは、因数の数学的な考え方から生まれました。したがって、効果的にメソッドを分割して同じ結果を得ることができます。

編集私は最初からこれを行います。大量のコードを作成し、少しずつ重複を削除する方法を見ていきます。これは TDD マントラの一部です。

赤。緑。リファクタリングして重複を削除します。

于 2011-05-31T18:31:21.220 に答える
0

通常、大きな関数を小さな関数に分割することをリファクタリングと呼びますが、小さな関数を組み合わせる行為をコンポジションと呼びます。

コンポジションは、プログラミング言語が関数を第一級エンティティとしてサポートしている場合に特に強力です。つまり、関数を引数として別の関数に渡すことができ、実行時まで存在しなかった新しい関数を返すことができます。

于 2011-05-31T18:32:51.490 に答える