2

一部のアプリケーションを Delphi XE2 から XE5 に移行しているときに、不要になったユニットが多数リストされていることに気付きました。

これは、私の質問につながるインターフェイスの使用セクションを整理することにつながります。

インターフェイス内のユニットの推奨順序はありますか? の順序でロードされることはわかっていますが、Usnit Scope ごとに整理する必要があります。

たとえば、MyCompany. * 最初または最後にリストされますか? Vclを配置する必要があります。*システムの前。*

アップデート

一般に、インターフェースではなく、ユニットを実装に含めます。Delphi 自身のユニットにヒエラルキーがあるかどうかについては、さらに把握しています...

たとえば、 System.SysUtils のに Windows ユニットをリストすると、使用される DeleteFile のバージョンが変更されるという 1 つの問題が発生しました...

明示的な質問

使用の順序は

Winapi*、System.*、Vcl.*、またはその逆?

4

3 に答える 3

4

uses リストのリファクタリングに関連するリスクがいくつかあります。

  • 後で使用される単位は、以前に使用された単位の記号 ( methodsclassesvarsconsts...) をオーバーライドします (スコープ)。

    これにより、(多かれ少なかれ) 微妙なバグがプログラムに導入される可能性があります。

  • ユニットを並べ替えると、intializationおよびfinalizationセクションが実行される順序を変更できます。

いくつかの利点もあります。

  • コンパイル速度が速い

  • より小さな実行可能ファイル (削除されたユニットにinitializationまたはがある場合のみfinalization)

  • 回避/防止は円を使用します (ただし、円を使用することは、多くの場合、最適でない OOP 設計の兆候です)

そうは言っても、質問の更新後:

私は David がすでに書いたのと同じことをする傾向があります: 低レベルから高レベルにユニットを並べます。

未使用のユニットを見つけたり、使用済みのユニットを最適な順序に並べたりするのに役立つツールがあります。( Peganza Icarus / PascalAnalyzerModelMaker )

コンパイラが実際に何をするかを言うのは難しいですが (特に現在は複数のコンパイラがあるため)、依存関係が最も少ないユニットを最初に配置すると、コンパイラが依存関係ツリーを構築しやすくなります。

于 2013-09-30T10:19:40.587 に答える
3

http://docwiki.embarcadero.com/RADStudio/XE3/en/Programs_and_Unitshttp://docwiki.embarcadero.com/RADStudio/XE5/en/Using_Namespaces_with_Delphiの記事を読んでください。これらの 2 つの記事は、あなたが尋ねたことを正確に説明しています。

于 2013-09-30T10:15:30.633 に答える