2011-07-28 17 views
8

私はいくつかのOLD(私より古いものとして)のCコードを整理し、最新のものにしておく必要があります。現在のコードともっときれいに統合します。レガシーCコードをMVCデザインにリファクタリングする

既存のコードはかなり厄介で、GUIロジックをビジネスロジックとデータアクセスロジックに自由に散在させます。唯一の恩恵は、それがスパゲティコードではなく、モジュール化されているということです(70年代のほとんどのコードがそうであるように)。

私の質問は誰でも私にこのコードをMVCにリファクタリングする方法についてのガイドラインを私に提供することができます(BTWはこの作業を引き受けながらCからC++へコードを移動しますが、私は両方の言語でかなり結構です)。

ところで、これは簡単なことではないことを十分に認識しています。 DBAL/BL/GUIとクリーンなMVC実装を混在させたモジュラー・コードから、どのようなステップが進むのかを知りたいだけです。

答えて

4

明確なステップがあるとは確信していません。既存のコードの構造によって変化します。

私は@ Jesus Ramosに同意します。テスト戦略を考え出すことが重要です。問題は、実際にはユニットが存在しないため、コードが現在ユニットテスト可能ではないため、UIをテストすることなくビジネスロジックをテストすることができない可能性があります。

私は、リファクタリングではなく、その内容を書き直すことを非常に真摯に考えます。

あなたがリファクタリングするつもりなら、私の推測では、「スイスチーズ」のアプローチを取ることになります。ピースを掘り出し、多くの穴がある中央の塊を残す。したがって、明確なAPIとデータオブジェクトのセットを提供することに焦点を当て、データベースアクセスコードを引き出します。これらは、モデルの基礎となります。 GUIコードをビューレイヤーに引き出します。残っているのはコントローラロジックで、それをリファクタリングすることができます。

2

ビジネスロジックレイヤーを最初にビルドします(それは元のように動作するかどうかを確認するためにいくつかの単体テストとともに)、私はデータレイヤーで再びユニットテストと共に作業します。これらの2つがあれば、GUIコードを強固にしてビジネスロジックやデータの必要な機能をGUIに公開することができるようにするためのインターフェイスを作成するのが最善でしょうが、GUIは個人的にはビジネスロジックレイヤーを作成し、データレイヤーにサブミットします。ここでの鍵は単体テスト(可能な場合)です。これにより、コードと原本が機能的に同じであることをより簡単に確認できるようになります。

この手順をステップごとに実行する必要はありませんが、GUIを残して終了するまでビジネスロジックレイヤーよりも複雑ではありません(ほとんどの場合)。

最も難しいのは、デカップリングそのものを理解することです。一部の人がこれを難しくし、3つのレイヤーを1つの機能にまとめ、それをリッピングすることは面倒です。

関連する問題