【发布时间】:2015-08-11 16:02:49
【问题描述】:
此代码由if/else 梯形图组成。它检查@tokens[0] 值并根据其内容调用函数:
if @tokens[0] == "add"
@calculator.add(@tokens[1].to_f)
elsif @tokens[0] == "subtract"
@calculator.subtract(@tokens[1].to_f)
elsif @tokens[0] == "multiply"
@calculator.multiply(@tokens[1].to_f)
elsif @tokens[0] == "divide"
@calculator.divide(@tokens[1].to_f)
elsif @tokens[0] == "sqr"
@calculator.sqr
elsif @tokens[0] == "sqrt"
@calculator.sqrt
elsif @tokens[0] == "cube"
@calculator.cube
elsif @tokens[0] == "cubert"
@calculator.cubert
end
我正在使用哈希映射来重构代码。除了 hashmap 之外,还有其他方法可以重构它吗?
【问题讨论】:
-
有很多方法可以重构代码。你试过什么?您试图通过重构解决的问题/目标是什么?代码少?提高性能?更好的组织?更多的混淆?您的尝试是如何未能实现这些目标的?
-
@Chris 我对你的超能力很感兴趣;)
-
您说您正在使用哈希映射,但是您的代码没有显示任何演示。
@tokens[0]不是哈希访问器,除非您使用0作为键。相反,看起来您正在使用数组。请提供样本输入。照原样,有很多东西可以干燥。 -
@theTinMan :上面的代码显示了基本的 if/else 阶梯,我知道如何使用 hashmap 进行重构。我想让你知道任何其他重构它的方法
-
如果您觉得其中任何一个有帮助,请不要忘记选择答案。