最近在看这本书,看的是英文版,有点吃力,要长时间集中精力才能看得进去。
书写得不错,有很多干货,如果要打算好好设计api,里面的建议都很有参考价值,毕竟是作者一步步写api总结出来的经验。
一开文,作者表达了一个很强的观念,就是api要clueless,用户无需关心api的实现细节,拿来完成自己的job就行。作者将它比喻为big building block,就是建房子用的结构,随取随用。api要给人这样的感觉,一方面是方便用户可以快速搭建自己的系统而不为细节分心,另一方面这对于api后续的evolution也很有好处,否则如果把细节暴露给用户,api后续要更改实现细节,用户搭建的系统将与更新版本的api不兼容。
作者是netbean的始创人,netbean初期的api就是由他一人负责开发的,后来随着开发团队不断壮大,api的需求很大,渐渐有人自己偷偷写api。虽然这种情况后来被作者个人的威信给控制住了,但一个人应付不了这么多api的状况还是没有得到改善。于是作者决心要把自己写api的经验分享出去,让团队的一部分人来设计api,不再让它成为团队的bottleneck。这就是本书的成因。由于netbean是java写的,所以这本书的example也是用java写的。虽然如此,作者还是极力保证api的设计不依赖语言特性,让它够general,让其它语言的开发者都能从中受益。