レガシー コードの大部分を維持する一環として、主にテスト (単体テスト) を容易にするために、設計の一部を変更する必要があります。解決する必要がある問題の 1 つは、コンポーネント間の既存のインターフェイスです。2 つのコンポーネント間のインターフェイスは、静的メソッドのみを含むクラスです。
簡単な例:
class ABInterface {
static methodA();
static methodB();
...
static methodZ();
};
インターフェイスはコンポーネント A によって使用されるため、さまざまなメソッドが ABInterface::methodA() を使用して入力データを準備し、コンポーネント B 内の適切な関数を呼び出すことができます。
現在、さまざまな理由から、このインターフェイスを再設計しようとしています。
単体テストの範囲を拡張する - コンポーネント間のこの依存関係を解決する必要があり、スタブ/モックが導入されます
これらのコンポーネント間のインターフェースは、元の設計から分岐しました (つまり、コンポーネント間の i/f に使用される多くの新しい関数が、このインターフェース クラスの外で作成されます)。
- コードは古く、時間の経過とともに大幅に変更されたため、リファクタリングが必要です。
この変更は、システムの残りの部分に影響を与えるものであってはなりません。テストに必要な多くのアーティファクトを本番コードに残すことを制限しようとしています。パフォーマンスは非常に重要であり、再設計後の低下はまったくない (またはごくわずかである) 必要があります。コードは C++ で OO です。
どのようなアプローチを取るべきか、いくつかのアイデアを探しています。これを効率的に行う方法について何か提案はありますか?