35. API设计的金科玉律

API设计的金科玉律

        API设计是很困难的,特别是要大规模使用时。如果你正在设计的API有成百上千的用户,你就该考虑在将来怎样修改以及修改是否会破坏客户代码。另外,你还要想想API的用户是怎么影响你的。如果一个API类在内部调用了一个它自己的方法,你该记住用户可能会继承你的类并重写它,这可能导致灾难的结果。你没法修改那个方法,因为有些用户给了它不同的含义。你未来的内部实现的选择就受到用户的支配。
        API的开发者用各种各样的方法解决这个问题,但最简单的方法是锁定API。如果你用的是Java,可能会尝试将大部分类和方法设定为final。c#中,你可能会让类和方法成为sealed的。不管用的什么语言,你都可能倾向于通过单件或者静态的工厂方法来表现API,以免别人覆盖行为或者以日后可能约束你的选择的方式来使用你的代码。这些看起来很合理,但是真的吗?
        过去几十年来,我们逐渐意识到单元测试是实践中非常重要的一部分,但是这种认识并没有完全渗透到行业中。我们周围都是证明。随便拿一个没有测试的使用第三方API的类,尝试为它写单元测试,大多数时候都会有困难。你会发现使用API的代码像胶水一样粘在它上面,没有办法冒充API类来与自己的代码交互,或者提供测试用的返回值。
        随着时间的推移,情况可能好转,但是只有在我们开始在设计API时把测试作为一个真正使用的场景。不幸的是,这不止是测试我们的代码,于是就有了API设计的金科玉律:仅为你开发的API写测试是不够的;也需要为使用API的代码编写单元测试。这样做了,就会得到用户在尝试独立地测试他们的代码时需要面对的第一手结果。
        让开发者更容易测试使用你的API的代码,方法不是唯一的。static,final和sealed本身不是不好的结构,它们有时也会很有用。但是明白测试中的问题是很重要的,而且你必须亲自体验才能做到。一旦你做了,你可以任何其它的设计挑战中使用这种方法。

原文:The Golden Rule of API Design by Michael Feathers

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值