Class 有人用这种方式设计api或库代码吗?

Class 有人用这种方式设计api或库代码吗?,class,pseudocode,api-design,method-chaining,Class,Pseudocode,Api Design,Method Chaining,我读了一些关于如何设计一个库或API的东西,偶然发现了Joshua Bloch在Google技术讲座上的精彩演讲。现在,虽然我远不是一个专业的API开发人员,但我认为编程一堆类/函数是一个类似的,尽管是同一事物的缩小版——明确的操作分离,轻松愉快的使用,鼓励干净的代码,等等 我正在浏览一些广泛使用的开源Java代码,并得到了这个想法(没有什么新的,只是清楚地表达出来了…) 让我们举一个例子伪代码(或者可能一些基本方言): 现在,受Java代码的启发,我希望能够做一些类似这样的事情: 1. Lab

我读了一些关于如何设计一个库或API的东西,偶然发现了Joshua Bloch在Google技术讲座上的精彩演讲。现在,虽然我远不是一个专业的API开发人员,但我认为编程一堆类/函数是一个类似的,尽管是同一事物的缩小版——明确的操作分离,轻松愉快的使用,鼓励干净的代码,等等

我正在浏览一些广泛使用的开源Java代码,并得到了这个想法(没有什么新的,只是清楚地表达出来了…)

让我们举一个例子伪代码(或者可能一些基本方言):

现在,受Java代码的启发,我希望能够做一些类似这样的事情:

1. Label l = new Label()
2.          .setName('Hello World')
3.          .setColor('blue')
4.          .show(zindex.top);
5. l.onClick = l.hide() ;
我的问题是:
有没有其他人像这样从伪代码开始设计API

买点小东西好吗?假设最多10个类,每个类可能有10个方法,每个方法中的代码不超过5-6行。很明显,这只是一组粗略的数字,用来显示要设计的类的大小——远不及完整的API,也不仅仅是一个爱好项目——一个专业的包,做一些小事情,但做得很好

有人发现这种方法有什么严重的缺点吗

我认为一个真正的好处是它迫使您首先写下您的用例


另一件事是,名词和动词保持简单,使您的最终产品能够避开多短语结构范例设计模式实现者综合症:-D

是的,这就是jQuery的设计方式,它总是返回自己,这样您就可以像这样链接方法。

我倾向于从空类和方法开始。这实际上是一个自上而下与自下而上设计的问题


不过我真的更喜欢巨大的白板草图。

这是一种相当常见的设计模式,称为a。它在函数式语言中很常见,在其他地方也越来越流行。我第一次看到它是在计划中


这是一个非常方便且易读的习惯用法,但请记住,有时确实需要在单个函数调用中初始化多个变量。例如,当必须根据数据组合设置内部状态时,或者当设置和覆盖默认值的成本很高时。因此,与所有的“模式”一样,要明智地、深思熟虑地使用。发件人:

1. Label l = new Label()
2.          .setName('Hello World')
3.          .setColor('blue')
4.          .show(zindex.top);
5. l.onClick = l.hide() ;
jQuery('<div/>', {  
    id: 'foo',  
    css: {  
        fontWeight: 700,  
        color: 'green'  
    },  
    click: function(){  
        alert('Foo has been clicked!');  
    }  
}); 
jQuery('<div/>')  
   .attr('id', 'foo')  
   .css({  
       fontWeight: 700,  
       color: 'green'  
   })  
   .click(function(){  
       alert('Foo has been clicked!');  
   });  
new StackPanel {
   Children = {
      new TextBlock { Text = "Hi there", Width = 50 },
      new TextBox { Width = 100 },
      new Border { 
          Content = new ListBox()
      }
   }
};