您的位置:首页 > 其它

API设计困扰

2011-07-23 19:46 148 查看
最近对产品的代码设计之道很迷茫,尤其目前的API设计。记得之前阅读过《Practical.API.Design.Confessions.of.a.Java.Framework.Architect》,对什么样的API才是好API和设计出好API的方法略知一二。但毕竟没有亲身体验过API的设计过程,对为什么要遵循那些规则没有深刻体会。如今,我被不良设计带来的烦恼折磨了,虽不能拼一己之力去改变什么,但至少把问题弄清楚,也是一种负责任的态度。于是,我花了2天时间阅读了《API design for C++》,深化下对一些重要概念的理解。

好API所具有的属性:

Provide a good abstraction
Hide implementation details
Minimally complete
Easy to use
Loosely coupled
Stable, Documented, tested
个人感觉,目前的产品违背了其中的大多数。

Stable, Documented, tested ==> 从目前的使用情况来看,肯定是unstable的;Document是有的,但很晦涩;几乎未作testing。

Loosely coupled ==> 感觉到一定的耦合性,但目前并未暴露出与之相关的严重问题。

Easy to use ==> 困难点在于参数的使用,一些参数由很复杂的结构体来定义,即使你不关心一些参数的设定或者使用默认就好,你也要一步步去设定每一个参数,使用起来相当不方便。

Minimally complete ==> 用户随意的一个需求,都成了一个API承诺。这样API会无限膨胀,不受控。

Hide implementation details ==> C语言程序,并未采用面向对象概念,所以是physical hiding。

Provide a good abstraction ==> 这个做的不好,简单明了的功能当然容易抽象,但一些辅助性的该如何抽象得更好,值得思考。

也许你会找理由说,你有特殊的需求,不能满足这些规则。没错,每个项目都有自己的特殊性,你当然可以违背其中的规则,但在违背之前,最好找到充分的理由,否则你的API设计就偏向了正确的设计之道。如果从设计一开始,你就没考虑到好API应该具有的属性,我建议先扩充一些背景知识,再开始实践,尤其对于那些有长远目标的设计。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: