设为首页 加入收藏

TOP

1.3.1 更健壮的代码
2013-10-07 16:24:16 来源: 作者: 【 】 浏览:80
Tags:1.3.1 健壮 代码

1.3 为什么使用API

在软件项目中为什么要关注API,这一问题可以从两方面理解:(1)为什么要设计并编写API?(2)为什么要在应用中使用其他人提供的API?我将在接下来的小节中回答这两方面的问题,并指出在项目中使用API的各种好处。

1.3.1 更健壮的代码

如果你正在编写供其他开发人员使用的模块,不管他们是公司里的其他工程师还是外部客户,比较明智的办法是构建API来让他们访问这些功能。这么做会带来以下好处。

隐藏实现。通过隐藏模块内部实现的细节,开发人员就可以在未来的某个时间自由修改模块的实现,而不给用户造成重大影响。如若不然,会导致以下结果:(1) 代码的更新受到限制;(2) 用户只有重写代码才能使用新版本的程序库。如果总是让用户不停地更新软件版本,他们很可能不愿再做更新,或者干脆弃用,另外寻找不需要太多维护工作的API。因此,优秀的API设计对业务或项目成功至关重要。

延长寿命。随着使用时间增长,那些公开了实现细节的系统的内部代码会变得错综复杂,系统的各个部分要依赖其他部分的内部实现细节。因此,系统将会变得脆弱、僵化、顽固且粘滞性高(Martin, 2000)。如此一来,公司为了改善这些代码,就不得不花费大量人力财力,甚至推倒重写。事先花工夫做好API设计,而后维护好该设计以保证一致性,软件寿命就能延长,从长远看也能节省花费。我们会在第4章前半部分深入讨论该问题。

促进模块化。API通常用来完成一项具体的任务或用例。因此,API定义了一组具有一致目的的模块化的功能集。在大量API基础之上开发的应用,其结构将降低耦合而更加模块化,每一个模块的行为都不依赖其他模块的内部细节。

减少代码重复。代码重复是软件工程中一种最恶劣的行为,任何时候都要避免犯此类错误。通过把所有的代码逻辑置于一个严格的接口之后,让所有客户使用这个接口,就能将程序的某种行为统一处理。这样做意味着只需更新一处代码就可以改变向所有客户提供的API的行为。这样有助于消除代码中所有重复的实现。事实上,很多API就是这样实现的,人们首先发现有重复的代码,然后制作统一的接口取代这些重复代码,于是就产生了API。这是一件好事。

消除硬编码假设。很多程序可能包含硬编码的值,并在整个代码中不断复制。例如,在需要写日志文件的地方就使用具体的文件名myprogram.log。我们可以使用API来提供这些信息,而不用在整个代码层面复制这些常量,例如使用GetLogFilename() API调用代替硬编码的"myprogram.log"字符串。

易于改变实现。如果将所有的实现细节隐藏在公共接口背后,就可以在不影响任何依赖此API代码的情况下改变其内部的实现细节。例如,可以将原本使用std::string解析文件的方式变为分配、释放、再分配char*缓冲区的方式。

易于优化。成功隐藏了实现细节后,在优化API的性能时就不用操心更改客户端代码。例如,可以利用加设缓存的方案优化某个计算密集型的方法。之所以这样做是因为所有读写潜在数据的操作都是通过该API进行的,因此该API更确切地知道何时缓存中的结果无效并且需要重新计算结果。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.2 API设计上有什么不同 下一篇1.3.2 代码复用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)