4

私は、VB5 でプログラムされていた古いアプリケーション スイートの開発を継続しなければならないという契約を結んでいます。

修正すべきバグと開発すべき新機能があります。

だから私はいくつかの選択肢があります:

  1. VB5 でプログラミングを続ける (NOOOOOOOOOOOOOOO!!!!)
  2. VB5 を C# に変換します (どのように??? 気が狂わずに可能ですか?)
  3. アプリケーション スイート全体を書き直す (非常に時間がかかる)

他に選択肢はありますか?私は何をすべきか?

編集:ああ、また、SQL EXPRESSに移行したいACCESSデータベースに依存しています。90年代のバカプログラマーが非論理的に作った狂ったデータベースだから(笑)。

ありがとう

4

7 に答える 7

3

私が毎回行ってきた選択は、書き直すか、適切な代替品が見つかった場合は購入することです。

VB6 から VB.NET へのインクリメンタル アップグレードを試みましたが、使用したくない ActiveX コントロールが周辺に残るため、このアプローチは好きではありません。書き直した方がきれいです。

VB5 から C# へのコンバーターはないと思います。VB5 から VB.NET に移行してから C# に変換することもできますが、私の経験では、アップグレードして壊れたコードをいじるよりも、書き直す方が時間がかかりません。

于 2011-04-11T13:41:36.927 に答える
1

私は最近、Artinsoft の VB Upgrade Companionを使用して、多くのレガシー VB6 アプリケーションを C# に変換するプロジェクトの作業を終了しました。

どのアプローチが最適かを判断するのは困難です。多くの場合、特に 2 つのプラットフォーム間で大幅に異なる機能に基づいた多くのロジックがある場合 (たとえば、インデックスが 1 つの配列や、Information.Err を介したエラーの処理)、コードの変換は非常に骨の折れる作業になる可能性があります。例外ではなくオブジェクト)。

一方、ゼロから記述しようとすると、元の VB5 コードを確認したときにすぐにはわからない微妙な動作を誤って変更してしまう可能性が高くなります。このようなものは、追跡するのが難しい場合があります。

良い妥協点は、コンバーターを使用してコードを移植し、これをゼロから作成するためのガイドとして使用することです。変換されたコードを新しいコード ベースに直接持ち上げることができる場所があることを願っています。しかし同時に、より保守しやすいコードを他の場所に書くという利点も得られます。

そうは言っても、元の VB5 が適切に作成され、(比較的) 適切に設計されている場合は、いかなる種類のアップグレードも行わないことをお勧めします。古いコードで作業するよりも、古いアプリケーションの既存の動作に一致させるためにはるかに多くの時間を費やすことになります。

あなたがやろうと決めたことは何でも頑張ってください - あなたはそれを必要とするでしょう:)

于 2011-04-11T14:00:07.223 に答える
1

2) を行う信頼できる方法がないため、1) または 3) です。

そして、あなたの顧客は 3) にお金を払いたがらないと思います。しかし、信頼性やサポートなどで販売できるかもしれません。

それ以外の場合は、1) で立ち往生しています。

于 2011-04-11T13:41:59.247 に答える
1

1 つのアプローチは、C# でコードのセクションを戦術的に書き直すことです。最もバグ修正する可能性が高い領域から開始し、C# アセンブリを作成して機能をミラーリングし、COM 相互運用機能を介してこれらを VB5 コードに公開します。

このアプローチには、単体テストの優れたスイートが強く推奨されます。

このような問題を切り刻む最善の方法を理解するには、Michael Feathers 著のWorking Effectively With Legacy Codeが最適な本だと聞いたことがあります。

于 2011-04-11T13:43:05.593 に答える
1

答えは間違いなく多くの要因に依存します。私は最近、同様のプロジェクト (大規模なスパゲッティ コードベースを使用した 10 年以上前の VB6 Windows アプリ) を作成し、「ハイブリッド」アプローチで対処しました。

  • VB6 でバグが修正されました
  • 新しい機能は、COM 相互運用機能を使用して .NET 4 で開発されました

いくつかの WPF ダイアログを開発し、新しい UI を処理するために古いインターフェイスに合わせてスタイルを設定しました。

このオプションは、新しい機能がメイン アプリからかなり独立している場合にのみ機能しますが、少なくとも新しいテクノロジーの生産性を活用し、将来の変換への道を開くという利点があります。

于 2011-04-11T13:43:25.970 に答える
0

最初に vb.net に変換し、次に C# に変換する必要がありますか?

于 2011-04-11T13:40:17.997 に答える
0

バグを修正する必要があり、それがかなり単純なバグであり、それ以上の作業が予想されない場合は、VB5 を使用してください。それ以外の場合は、はるかに多くの作業が発生します。

ただし、これが本当に「ライブ」製品であり、将来的に多くの作業が期待される場合は、おそらくゼロから始めるでしょう. 私の推測では、アプリを作成して以来、設計とアーキテクチャについて多くのことを学んでいると思います。この機会に、より保守しやすいアプリを作成することをお勧めします。(また、元のアプリのどの設計上の決定が最終的に誤りだったかを学習したことでしょう。)

于 2011-04-11T13:43:29.743 に答える