web-dev-qa-db-ja.com

デビッドウィーラーの格言で「間接レベル」とはどういう意味ですか?

私は本でこの引用を読みました:

別のレベルの間接参照を使用して解決できないコンピュータサイエンスの問題はありません。

誰かがそれを説明できますか? 「間接レベル」とはどういう意味ですか?

私が理解したところによると、間接参照は、値自体の代わりに値のポインターを使用するための空想的な名前です。これを明確にしてください。

30
Andrei Diaconu

「間接参照」とは、最も広い意味で、他のものを使用するものを使用することです。

したがって、値の代わりに値のポインターを使用する例では、この定義を1つのレベルに適合させます。ポインタは何かであり、値は何か他のものです。

通常、これは範囲が大きいものです。

  • Webサイトを使用して、XMLベースのサービスによって生成されたデータをグラフィカルに表示します。ここでウェブサイトは何かであり、その背後に隠れているのは何か他のものであるデータです。
  • オペレーティングシステムを使用して表示画面にアクセスします。ここに、少なくとも間接的な2つの層があります。 OSはスクリーンドライバを使用します。何か他のものを使用して1つの何か。次に、スクリーンドライバーはスクリーンハードウェアと直接通信し、あちこちに小さな光の点を作ります。ドライバーは、ハードウェアである他のものを使用する次のものです。
  • 1つのAPIが高レベルで何かを処理し、そのAPIが低レベルで同じことを処理することは珍しいことではありません。ここでも、低レベルAPIの上に間接参照のレベルが追加され、これを新しい改善されたAPIと呼びます。

この最後の例は、おそらく、そのすべての「理由」を説明しています。

何かをマスターして、それをより高いレベルの抽象化に抽象化する方法を学ぶと、新しいレベルの間接参照が必要になり、作業の一部を新しいAPIにオフロードすることで、より大きな問題をより迅速に解決できます。

34
Lee Meador

間接化の潜在的な大きな利点の1つは、結合の減少です。物事を適切に区分化する必要があるという別の言い方です。これは多くの場合、長期にわたるテスト、保守性、および柔軟性に大きく役立ちます。

例として、アプリケーションが永続化されたデータを読み取る必要がある場合、それを読み取る場所(および方法)に関する特定の知識をアプリケーション全体に分散させるのではなく、分離して(データの読み取りをメソッドに入れます)、次にアプリの他のすべての部分がそのメソッドを呼び出してデータを取得するようにします。アプリの各部分がそれらの詳細自体を処理する必要はありません。

6
Paul Dardeau