A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© cuisq 中级黑马   /  2016-6-9 08:58  /  356 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

设计可以降低系统各部分之间的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合度,从而提高系统的维护性和稳定性。

Joshua Bloch是美国著名程序式设计师。他为Java平台设计并实现了许多的功能,是Google的首席Java架构师(Chief Java Architect)。他也是《Effective Java Programming Language Guide》一书的作者,就是人们常说的 Effective Java。本文翻译自Joshua Bloch所发表的一个PPT:How to Design a Good API and Why it Matters。

随着大数据、公共平台等互联网技术的日益成熟,API接口的重要性日益凸显,从公司的角度来看,API可以算作是公司一笔巨大的资产,公共API可以捕获用户、为公司做出许多贡献。对于个人来说,只要你编程,你就是一个API设计者,因为好的代码即是模块——每个模块便是一个API,而好的模块会被多次使用。此外,编写API还有利于开发者提高代码质量,提高自身的编码水平。

优秀API所具备的特征:

    简单易学;
    易于使用,即使没有文档;
    很难误用;
    易于阅读,代码易于维护;
    足够强大,可以满足需求;
    易于扩展;
    适合用户。

了解了一款优秀API所具备的特征后,一起再来看看如何设计优秀的API,有哪些流程和规则可循,开发者在设计时需要注意哪些事项。
API设计流程中的注意事项

征集需求

在开始之前,你可能会收到一些解决方案,它们不一定会比现有的方案好,而你的任务是以用例的形式提取真实需求,并制定真正合适的解决方案,这样构建出来的东西就会更加有价值。

从简短的说明开始

这时,编写简短的说明最为合适,编写时需要考虑的因素有:

    灵活性要远胜于完整性;
    跳出规则:听取意见并严阵以待;
    精炼短小才易修改;
     获得信任之后将其具体化,在此之中,编程很重要。

尽早编写API

    对每一个实现进行保存,以防丢失;
    在开始之前,列出一些合理的规定,保存所写说明,以防丢失;
    继续编写和充实API。

编写SPI尤为重要

    Service Provider Interface即服务提供商接口,插件服务支持多种实现,例如Java Cryptography Extension
    (JCE);
    发布之前编写多个插件;
    “三次原则”(“The Rule of Threes”):指的是当某个功能第三次出现时,才进行”抽象化”。

维护切实可行的期望

    大多数API设计都过于约束;
    对可能会犯的错误进行预计,要用发展的思维来编写API。

API设计原则

每个API接口应该只专注一件事,并做好:如果它很难命名,那么这或许是个不好的征兆,好的名称可以驱动开发、并且只需拆分与合并模块即可

    API应尽可能地轻小:满足需求、对有疑问的地方可以暂时不使用(函数、类、方法、参数等,你可以不添加,但千万不要删除)、概念性的东西比体积重要、寻找一个良好的动力体积比;
    实现不要影响API:关注实现细节(不要迷惑用户、不要随便改变实现方式)、意识到具体的实现细节(不要有越权的方法行为,例如不要制订哈希函数、所有的调优参数都是可疑的);
    不要让实现细节“泄露”到API(例如on-disk和on-the-wire格式等异常情况);
    最小化可访问:设计人员应尽量把类及成员设为私有,公共类不应该有公共字段(包括异常实例),最大限度地提高信息隐藏,允许模块可以被使用、理解、构建、测试和独立调试;
    命名问题:应该见名知意,避免含糊的缩写、对同一样东西的命名应该有个一致性的前缀(遍及整个平台API)、讲究对称、代码应该易读。如下所示:

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马