5
長いメソッドのリファクタリング:そのままにするか、メソッドに分離するか、ローカル関数を使用する
私がこのような長い方法を持っているとしましょう: public void SomeLongMethod() { // Some task #1 ... // Some task #2 ... } このメソッドには、個別のメソッドまたはローカル関数に移動する必要がある繰り返し部分はありません。 長いメソッドはコードのにおいだと思っている人はたくさんいます(私を含めて)。また、私は#regionここで(s)を使用するのが好きではありません。なぜこれが悪いのかを説明する非常に人気のある答えがあります。 しかし、このコードをメソッドに分割すると public void SomeLongMethod() { Task1(); Task2(); } private void Task1() { // Some task #1 ... } private void Task2() { // Some task #1 ... } 次の問題が発生します。 単一のメソッドによって内部的に使用される定義でクラス定義スコープを汚染しているため、どこかに文書化する必要がTask1あり、そのTask2内部のみを対象としてSomeLongMethodいます(または、私のコードを読むすべての人がこのアイデアを推測する必要があります)。 単一のSomeLongMethodメソッド内で一度だけ使用されるメソッドの汚染IDEオートコンプリート(Intellisenseなど)。 このメソッドコードをローカル関数に分離すると …