减少与时间/隐式耦合相关的隐藏复杂性的编程术语是什么?

问题描述

减少与时间/隐式耦合相关的隐藏复杂性的编程术语是什么?

想象一下,我们有一个移动应用程序,可以从网络调用获取功能标志。下游可以通过以下两种方式之一检查某个功能是否已启用。

  1. 同步
typealias CheckIfFeatureIsEnabled = (Feature) -> Boolean

val checkIfFeatureIsEnabled: CheckIfFeatureIsEnabled = { .. }

if (checkIfFeatureIsEnabled(feature)) {
  // ..
} else {
  // ..
}

也许有 50 个不同的功能标志和 50 个不同的开发者,每个都调用 CheckIsMyFeatureEnabled。但这会产生一个问题 - 在功能标志 API 调用返回之前调用 () -> Boolean 是无效的代码路径,因为调用站点应该等待直到功能标志 API 调用调用 () -> Boolean 之前完成。这意味着调用函数的所有 50 名开发人员都需要注意时间方面的这种隐藏的边缘情况。对于在应用启动期间检查的功能标志,可能会出现这种边缘情况。

或者,可以通过将功能检查表示为挂起函数来避免上述边缘情况的复杂性,它会自动挂起,直到功能标志 API 调用返回

  1. 异步(挂起函数
// suspends until feature flags are fetched
typealias CheckIfFeatureIsEnabled = suspend (Feature) -> Boolean

这里的优点是这个挂起功能可以实现一次,使用这个函数的 50 名开发者可以在 API 调用免费完成之前获得这个挂起,并且不必知道过早调用函数的边缘情况.最终,这会降低复杂性。

这种编码风格有技术术语吗?我使用了诸如“通过避免时间耦合来减少隐藏的复杂性”之类的术语,但我不确定这是否正确。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)