底层最好有默认值,上层可以少硬编码
底层(被依赖者)最好有默认值,上层(依赖者)可以少硬编码。判断不是问题,问题是重复判断;硬编码本身是必须的,问题是重复的硬编码。 现象 比如: 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 的硬编码是必不可少的,因为这里本身就是触发的地方,且其他类型本身就不支持此操作。 判断不是问题,重复判断才是问题 这就是说的**“判断不是问题,问题是重复判断”**。 这里硬编码其实也一样: 硬编码本身是必须的; 问题是重复的硬编码; 况且这里的硬编码就是判断。 小结 底层(被依赖者)最好有默认值,上层(依赖者)可以少硬编码; 判断不是问题,问题是重复判断; 硬编码本身是必须的,问题是重复的硬编码; 底层默认值让上层只需要处理异常情况,逻辑更简单。