底层(被依赖者)最好有默认值,上层(依赖者)可以少硬编码。判断不是问题,问题是重复判断;硬编码本身是必须的,问题是重复的硬编码。
现象
比如:
def get_storage_health():
"""
return storage health info:
'healthy'/'unhealthy'
"""
if not sub_container.is_tps_container():
# Other storage types do not have this check, default healthy
return "healthy"
这样上层就不需要硬编码判断是什么存储类型了,只要判断 unhealthy 做处理即可。
核心:底层默认值,上层少硬编码
底层(被依赖者)最好有默认值,上层(依赖者)可以少硬编码。
而 get_storage_health 的硬编码是必不可少的,因为这里本身就是触发的地方,且其他类型本身就不支持此操作。
判断不是问题,重复判断才是问题
这就是说的**“判断不是问题,问题是重复判断”**。
这里硬编码其实也一样:
- 硬编码本身是必须的;
- 问题是重复的硬编码;
- 况且这里的硬编码就是判断。
小结
- 底层(被依赖者)最好有默认值,上层(依赖者)可以少硬编码;
- 判断不是问题,问题是重复判断;
- 硬编码本身是必须的,问题是重复的硬编码;
- 底层默认值让上层只需要处理异常情况,逻辑更简单。