VB6 の移行に関する質問が既にあることは承知していますが、私のプロジェクトのコード ベースはここでいくつかの新しい質問をもたらします。
コードの品質、構造、およびアーキテクチャは悪夢に過ぎないと言わざるを得ません。2 つの大きなプロジェクトがあります。Nr.1 には 40 のフォーム、40 のモジュール、およびいくつかのクラス ファイルがあります。この EXE は一種の「ベース システム」です。Nr.2 には 80 個のフォーム、20 個のモジュール、およびいくつかのクラス ファイルがあり、この EXE は「ベース システム」から関数を呼び出します。次に、GUI を使用する約 10 個のプロジェクト (それぞれ 1 ~ 3 個のフォーム) と、別の 90 個の非 GUI プロジェクトがあり、そのほとんどが EXE ファイルであり、いくつかの DLL です。DLL は、C、C++、および VB6 で記述されています。
コードは 10 年間進化してきており、ほとんどの場合、一度に 1 人の (悪い) 開発者によって書かれています。
- 500 行 (およびそれ以上) の関数は非常に一般的です。
- GUI コンポーネントの 90% は、text1、command2(1)、… という名前です。
- たとえば、5000 行のコードを含む EXE プロジェクト (GUI なし) がコピーされ、コピーの唯一の変更点は、FTP ではなくメールごとにファイルを送信することでした (同じプロジェクトのさらに 2 つのコピーもあります)。 )。
- 以前は小さなフォーム (15 フィールド) があり、小さな問題 (通常は最大 30 分) を解決する必要がありました。何かを変更するたびに、フォームが機能しないか、新しいエラーが発生しました。2 日後、フォームを完全に書き直すことにしました。古いフォームの 20 個までの SQL ステートメントから、新しいフォームで生き残ったのは 2 個だけでした。
- コード内のコメントについても質問しないでください …</li>
私は数ヶ月前にプロジェクトを引き継ぎ、私は唯一のメンテナーです。変更要求とエラーの一定の (しかし低い) フローがあり、法的要件の観点から、ソフトウェアを実行し、「最新」に保つために、顧客から保守予算を受け取ります。
私のオプション
1) ゼロから書き直す - その場合、移植性のために Java で書くことができます。ここでの問題は、一部の (古い) ユーザー ヘルプ以外にドキュメントがないことです。したがって、醜いコードは「ドキュメント」です。ソフトウェアが何をすべきかを高いレベルで知っている人物が 1 人います。また、長期的には大幅なコスト削減があったとしても、経営陣にそうするよう説得するのは困難です。政治的な問題があります。また、データベース構造はコードよりも優れているわけではないため、一度に 1 つの (vb) プロジェクトを実行することもできません。つまり、最初から行う必要もあります。そのため、一度にソフトウェア全体を変更することしかできません。
2) コードを VB.NET / C# に移行する 最初にメイン プロジェクトの移行を行いました。既にテスト済みで、Project Nr.1 から約 2000 のアップグレード コメントを受け取りました。すぐ。ここでの私の考えは、変換後、DB 抽象化用のクラスを作成し、これらのクラスを使用するようにコードを変更してリファクタリングを行い、他のプロジェクトも移行および変更し、すべてのコードが DB クラスを使用するときに DB 構造を変更することです。
3)とにかく何かを変更する必要があるときはいつでもVB6のコードをリファクタリングし(すでに部分的にこれを行っています)、ある時点で残りもリファクタリングします。そうすれば、元のコードが元のコードであり、エラーがある場合、それらが移行の結果ではないことが明らかであるため、元の機能をより簡単に確認できます。コードがリファクタリングされると (さらに 50 ~ 75% 小さくなると思います)、.NET への移行が容易になります。次に、DB 構造を変更します (そして、もう一度リファクタリングを行います…)。
将来的に行うべきいくつかの大きな変更 (Win7 との互換性を持たせること、およびコードの大部分に影響を与える別の大きな CR) があるので、これらの変更を行う良い機会があるでしょう。とにかくたくさんのコード。
私の質問は、悪い、醜いコードを移行するための経験/ヒントを持っているのは誰ですか? どのオプションを提案しますか?