什么是流畅的界面?

Sti*_*MAN 14 c++ coding-style fluent-interface

我最近遇到了这个表达 - 但是在维基百科上阅读并没有对我说明多少 - 我仍然没有得到它:

  1. 有什么意义呢
  2. 它是如何在实践中使用的(即它如何使编码人员在日常工作/建筑系统中受益)?

[编辑] 维基百科文章C++示例过长,并将流畅的界面讨论与简单的Glut应用程序的示例混为一谈.有人可以提供一个类的SUCCINCT C++示例来说明一个流畅的界面(例如,这种影响与普通的C++界面有何不同)?

Thi*_*ilo 10

它通过减少打字(和阅读)的数量而使编码人员受益.

要在Wikipedia上使用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();
}
Run Code Online (Sandbox Code Playgroud)

后:

 int main(int argc, char **argv) {
     FluentGlutApp app(argc, argv)
         .withDoubleBuffer().withRGBA().withAlpha().withDepth()
         .at(200, 200).across(500, 500)
         .named("My OpenGL/GLUT App");
     app.create();
 }
Run Code Online (Sandbox Code Playgroud)

  • @Stick it to the MAN:维基百科文章链接到Martin Fowler的原创文章(他创造了这个短语).在那篇文章的最后,他给出了一些指示,说明为什么流畅的接口不仅仅是方法链接.http://martinfowler.com/bliki/FluentInterface.html (4认同)

jbv*_*bvo 8

对"流畅的界面"一词有不同的解释.在C++中创建一个的常用方法是方法链,它通常用于例如iostream库:

Object.MethodA().MethodB();
cout << "a = " << a;
Run Code Online (Sandbox Code Playgroud)

命名参数成语是一口流利的界面的另一个很好的例子:

Window w = CreateWindow()
               .Width(400)
               .Height(300)
               .OnTop();
Run Code Online (Sandbox Code Playgroud)

好处?代码更易读,更灵活,但仍然取决于课程的实施.