16

私は最近この表現に出くわしました-しかしウィキペディアを読んでもそれは私にとってあまり明確ではありませんでした-私はまだそれを理解していません:

  1. それのポイントは何ですか
  2. それは実際にどのように使用されていますか(つまり、日常の作業/構築システムでコーダーにどのように役立ちますか)?

[編集] ウィキペディアの記事C++の例は長すぎて、流暢なインターフェースの議論を単純なGlutアプリの例と混同しています。誰かが流暢なインターフェースを説明するクラスのSUCCINCTC++の例を提供できますか(たとえば、そのような影響は通常のC ++インターフェースとどのように異なりますか)?

4

4 に答える 4

14

入力(および読み取り)の量を減らすことで、コーダーに利益をもたらします。

ウィキペディアの C++ の例を使用するには:

前:

int main(int argc, char **argv) {
     GlutApp app(argc, argv);
     app.setDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_ALPHA|GLUT_DEPTH); // Set framebuffer params
     app.setWindowSize(500, 500); // Set window params
     app.setWindowPosition(200, 200);
     app.setTitle("My OpenGL/GLUT App");
     app.create();
}

後:

 int main(int argc, char **argv) {
     FluentGlutApp app(argc, argv);
     app.withDoubleBuffer().withRGBA().withAlpha().withDepth()
        .at(200, 200).across(500, 500)
        .named("My OpenGL/GLUT App");
     app.create();
 }
于 2010-01-18T07:37:34.130 に答える
9

「流暢なインターフェース」という用語にはさまざまな解釈があります。C++ で作成する一般的な方法は、メソッド チェーンです。これは、iostream ライブラリなどで一般的に使用されます。

Object.MethodA().MethodB();
cout << "a = " << a;

Named Parameter Idiomは流暢なインターフェイスのもう 1 つの良い例です。

Window w = CreateWindow()
               .Width(400)
               .Height(300)
               .OnTop();

メリット?もちろん、それはもちろん実装に依存しますが、より読みやすく、より柔軟なコード。

于 2010-01-18T08:13:33.997 に答える
2

流暢なインターフェイスの大きな違いと利点の 1 つは、オブジェクトを作成して引数として使用する場合に、一部のプロパティを変更するためにインスタンス変数が必要ないことです。

それなし:

Object object;
object.setcolor("red"); 
object.setstyle("solid");
object.setname("test");
world.CreateNode(object);

流暢なインターフェースで:

world.CreateNode(Object()
                                           .setcolor("red")
                                           .setstyle("solid")
                                           .setname("test")
                             );
于 2010-01-18T08:09:55.610 に答える