问题描述
减少与时间/隐式耦合相关的隐藏复杂性的编程术语是什么?
想象一下,我们有一个移动应用程序,可以从网络调用中获取功能标志。下游可以通过以下两种方式之一检查某个功能是否已启用。
- 同步
typealias CheckIfFeatureIsEnabled = (Feature) -> Boolean
val checkIfFeatureIsEnabled: CheckIfFeatureIsEnabled = { .. }
if (checkIfFeatureIsEnabled(feature)) {
// ..
} else {
// ..
}
也许有 50 个不同的功能标志和 50 个不同的开发者,每个都调用 CheckIsMyFeatureEnabled
。但这会产生一个问题 - 在功能标志 API 调用返回之前调用 () -> Boolean
是无效的代码路径,因为调用站点应该等待直到功能标志 API 调用在调用 () -> Boolean
之前完成。这意味着调用此函数的所有 50 名开发人员都需要注意时间方面的这种隐藏的边缘情况。对于在应用启动期间检查的功能标志,可能会出现这种边缘情况。
或者,可以通过将功能检查表示为挂起函数来避免上述边缘情况的复杂性,它会自动挂起,直到功能标志 API 调用返回:
- 异步(挂起函数)
// suspends until feature flags are fetched
typealias CheckIfFeatureIsEnabled = suspend (Feature) -> Boolean
这里的优点是这个挂起功能可以实现一次,使用这个函数的 50 名开发者可以在 API 调用免费完成之前获得这个挂起,并且不必知道过早调用该函数的边缘情况.最终,这会降低复杂性。
这种编码风格有技术术语吗?我使用了诸如“通过避免时间耦合来减少隐藏的复杂性”之类的术语,但我不确定这是否正确。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)