API 设计——时间耦合
API 设计——时间耦合
原文:https://medium.com/hackernoon/api-design-temporal-coupling-2c1687173c7c
通过在编译时实施明显的 API,使开发变得更加容易
时间耦合是一种严重的代码味道。对于一个开发者来说,错误地调用一个好的 API 应该是很难的。

Usage of a BadApi that is temporally coupled
上面的代码编译后,运行时抛出了一个错误。为什么?

BadApi implementation
在调用login()之前没有设置badApi.url字段。要求一个类的某些方法以特定的顺序被调用被称为时间耦合,这降低了开发速度。
如何避免时间耦合

Usage of a good api
除了传递无效数据,很难错误地调用这个 API。

GoodApi implementation
奖励积分
尽早验证,用类型安全的对象代替Strings。

两种可能的.login()实现:
fun login(username: String, password: String)fun login(username: Username, password: Password)
1 允许开发人员不小心混淆用户名和密码字段(代码可以编译,因为两个参数都是字符串),而#2 则不可能。
代码可在 GitHub 上获得。
在 Reddit 上捕捉对话!



