これは、私がここで始めた議論の続きです。この分野の経験がないため、Delphi ソース コードをモジュール化する最善の方法を見つけたいと考えています。私はあなたのすべての提案に感謝します。
私がすでにそこに書いたことを投稿させてください。
私が働いている会社が開発したソフトウェアは、100 以上のモジュールで構成されています (そのほとんどは、さまざまなデバイスのドライバーのようなものです)。それらのほとんどは同じコード (ほとんどの場合クラス) を共有しています。問題は、これらのクラスが常に個別のスタンドアロン PAS ユニットに配置されるとは限らないことです。共有コードは、モジュール固有のコードを含むユニットに入れられることが多いということです。これは、共有クラスのバグを修正する場合、それが定義されている PAS ユニットをすべてのソフトウェア モジュールにコピーして再コンパイルするだけでは不十分であることを意味します。残念ながら、固定されたコードを各モジュールに 1 つずつコピーして、適切なユニットとクラスに貼り付ける必要があります。これには多くの時間がかかります。これは、正しいアプローチを選択することで、近いうちに排除したいものです。助けてください。
EXE と共に配布される BPL を使用することは良い解決策になると思いましたが、前の議論で述べたように、いくつかの欠点があります。最悪の問題は、各 EXE が複数の BPL を必要とする場合、テクニカル サポート担当者が、どの EXE がどの BPL を必要とするかを把握し、エンド ユーザーに適切なファイルを提供する必要があることです。ソフトウェア アップデーターがない限り、これは技術者とエンド ユーザーの両方にとって大きなメリットとなります。彼らは確かに迷子になり、怒るでしょう:-/.
また、互換性の問題も発生する可能性があります。1 つの BPL が多くの EXE で共有されている場合、その BPL の変更は、1 つの EXE には有効で、他の一部の EXE には無効になる可能性があります。
非常に多くのプロジェクトでバグ修正を迅速に行うにはどうすればよいでしょうか? 以下のいずれかの方法が考えられます。より良いアイデアがあれば、お知らせください。
- 共有コードを個別のスタンドアロン PAS ユニットに配置して、そのうちの 1 つにバグ修正があった場合、それをすべてのプロジェクトにコピー (古いファイルを上書き) し、すべてを再コンパイルするだけで十分です。これは、各ユニットが使用されているプロジェクトの数だけコピーされることを意味します。
めったに変更されないコードに関する限り、この解決策は問題ないようです。しかし、一般的な機能と手順を備えた pa ユニットもあり、これらはしばしば変更されます。誰かが新しい関数をこのファイルに追加するたびに、同じ手順 (非常に多くのプロジェクトをコピーして再コンパイルする) を行うことは不可能です。
- すべての共有コードの BPL を作成しますが、それらを EXE にリンクして、EXE がスタンドアロンになるようにします。
私にとっては、これが最善の解決策のように思えますが、いくつかの短所があります。BPL でバグ修正を行った場合、各プログラマーは自分のコンピューターで BPL を更新する必要があります。彼らがそれを忘れたらどうしますか?ただし、それは小さな問題だと思います。変更についてお互いに通知するように注意すれば、すべてがうまくいくはずです. どう思いますか?
- そして、CodeInChaos によって提案された最後のアイデア (正しく理解できたかどうかはわかりません)。プロジェクト間で PAS ファイルを共有する。おそらく、共有コードを別のフォルダーに保存し、すべてのプロジェクトでそのコードを検索する必要があることを意味しますよね? また、プロジェクトを変更する必要がある場合はいつでも、共有ファイル フォルダーと一緒に SVN からダウンロードする必要があると思います。共有コードを変更するたびに、そのコードを使用する各プロジェクトを再コンパイルする必要があります。
良い解決策を選択するのを手伝ってください。ソフトウェア開発への愚かなアプローチのせいで、会社がバグ修正のために必要以上に多くの時間とお金を失うことを望んでいません。これまでのところ、誰もそれを気にかけたことがなく、それがどれほど多くの問題を引き起こしているか想像できるでしょう.
どうもありがとうございました。