2010-01-18 55 views
13

Gần đây tôi tình cờ gặp biểu hiện này - nhưng đọc lên on Wikipedia không rõ nó nhiều cho tôi - tôi vẫn không nhận được nó:Giao diện thông thạo là gì?

  1. điểm của nó là gì
  2. Làm thế nào là nó được sử dụng trong thực tế (tức là làm thế nào nó có lợi cho một coder trong ngày của họ để làm việc ngày/xây dựng hệ thống)?

[Chỉnh sửa] Các Wikipedia bài viết C++ ví dụ là quá dài, và conflates cuộc thảo luận về một giao diện thông thạo với một ví dụ về một ứng dụng dư thừa cho đơn giản. Ai đó có thể cung cấp một ví dụ SUCCINCT C++ của một lớp minh họa một giao diện thông thạo (ví dụ như ảnh hưởng như thế nào khác với giao diện C++ thông thường)?

Trả lời

8

Nó có lợi cho người lập trình bằng cách giảm số tiền mà anh ta phải nhập (và đọc).

Để sử dụng C++ ví dụ trên Wikipedia:

Trướ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(); 
} 

Sau:

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(); 
} 
+0

Bạn có thể cung cấp ví dụ ngắn gọn về điều này không ?. Ví dụ về bài viết wikipedia Ví dụ C++ quá dài và điểm thảo luận giao diện thông thạo bị mất trong ứng dụng Glut. –

+1

Điều này khác với chuỗi phương pháp như thế nào? (đây có phải là trường hợp khác của một người nào đó đặt ra một cụm từ mới để mô tả một cái gì đó đã được một cái tên khác biết đến không?) –

+3

@Chuyển nó đến THE MAN: Bài viết wikipedia liên kết đến bài viết gốc của Martin Fowler (nơi anh ta đặt ra cụm từ). Ở phần cuối của bài viết đó, ông đưa ra một số dấu hiệu cho thấy tại sao giao diện thông thạo không chỉ đơn thuần là chuỗi phương pháp. http://martinfowler.com/bliki/FluentInterface.html –

2

Một sự khác biệt lớn và lợi thế của giao diện thông thạo là bạn không cần một biến mẫu để thay đổi một số thuộc tính khi bạn muốn tạo một đối tượng và sử dụng nó làm đối số:

không:

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

với giao diện thông thạo:

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

Có nhiều cách hiểu khác nhau về thuật ngữ "giao diện thông thạo". Một cách phổ biến để tạo ra một trong C++ là phương pháp chaining, mà thường được sử dụng trong ví dụ thư viện iostream:

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

Các Named Parameter Idiom là một ví dụ tốt đẹp của một giao diện thông thạo:

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

Những lợi ích ? Mã dễ đọc hơn và linh hoạt hơn, mặc dù điều đó vẫn phụ thuộc vào việc thực hiện khóa học.

Các vấn đề liên quan