2013-08-01 5 views
15

は私が本の中で、この引用文を読んだ:デビッド・ウィーラーの格言の「レベルの間接化」は何を意味していますか?

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

誰かがそれを説明できますか? 「インダイレクションのレベル」とはどういう意味ですか?

私が理解したところでは、間接参照は、値そのものの代わりに値のポインタを使用するための素晴らしい名前です。私にはこれを明確にしてください。

+6

あなたは引用の残りの部分を忘れてしまった "...あまりにも多くのレベルのぼかしを除いて" –

+0

私は、データのレイヤーをオブジェクトに抽象化して、さまざまなレベルの抽象化おそらくOOPのパラダイムでは異なるオブジェクトに)。 – Houdini

+0

[Indirectionのレベルはすべての問題を解決します](http://stackoverflow.com/questions/288623/level-of-indirection-solves-every-problem)。 [抽象レイヤと間接レベルの違いは何ですか?](http://programmers.stackexchange.com/q/111756)、[その他のWeb](http:// www。google.com/search?q=there+is+no+problem+that+cannot+be+solved+with+another+level+of+indirection)。 –

答えて

20

「間接指定」は、最も広い意味で、他の何かを使用するものを使用しています。

したがって、値の代わりに値のポインタを使用するこの例は、この定義を1つのレベルに適合させます。ポインタは何か、値は何か他のものです。グラフィカルにXMLベースのサービスによって生成されたデータを表示するためにウェブサイトを使用して

  • は、通常、これはスコープの方が大きいものです。ここではWebサイトが何かであり、その背後に隠れているのは何か他のデータです。

  • オペレーティングシステムを使用してディスプレイ画面にアクセスする。少なくとも間接的には2つの層があります。 OSは画面ドライバを使用します。何か他のものを使っているもの。次に、スクリーン・ドライバーがスクリーン・ハードウェアに直接話しかけて、そこに小さな光点を作っています。ドライバはハードウェアである他のものを使用する次のものです。
  • あるAPIが高いレベルで何かを処理することは珍しくなく、そのAPIは低いレベルで同じことを処理します。再び間接レベルが低レベルAPIの上に追加され、新しい、改良されたAPIと呼ばれます。

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

われわれは何かを学び、それをより抽象度の高いレベルに抽象化する方法を学ぶので、新しいレベルの間接化が必要であり、いくつかの作業を新しいAPIにオフロードすることにより、 。

+0

ちょっとthats私が言ったこと!良い答え: – Houdini

+0

nice答え!ありがとう –

+0

もちろん、インダイレクションのレイヤーを追加することで解決できない問題の1つは、インダイレクションのレイヤーが多すぎる場合です。 –

3

間接指定の潜在的な大きな利点の1つは、カップリングの削減です。物事は適切に区画化されなければならないという別の方法です。これは、しばしば、テスト、保守性、および長期的な柔軟性に大きく役立ちます。

例として、アプリケーションが永続化されたデータを読み込む必要がある場合、アプリケーション全体に分散している場所や方法を特定の知識を持たずに分離します(データの読み込みをメソッド)を呼び出すと、アプリケーションの他の部分すべてがそのメソッドを呼び出して、アプリケーションの各部分ではなくデータを取得するようにします。

関連する問題