【发布时间】:2013-10-25 08:13:52
【问题描述】:
目前我有七个类似于以下代码的 if 语句:
if(hit.collider.gameObject.tag == "Colour1" && start_time > look_at_time)
{
new_colour1.ChangeObjectMaterialColour(hit.collider.gameObject.renderer.material.color);
var colums = GameObject.FindGameObjectsWithTag("column");
foreach( GameObject c in colums)
c.GetComponent<MeshRenderer>().materials[1].color = new_colour1.orignalMaterial;
}
else if(hit.collider.gameObject.tag == "Colour2" && start_time > look_at_time)
{
new_colour2.ChangeObjectMaterialColour(hit.collider.gameObject.renderer.material.color);
var colums = GameObject.FindGameObjectsWithTag("column");
foreach( GameObject c in colums)
c.GetComponent<MeshRenderer>().materials[1].color = new_colour2.orignalMaterial;
}
每个语句大约有 6 行代码,占用大量空间,阅读起来可能有点棘手。我想要做的是找到一种方法来重新考虑这一点,以便我的代码不那么笨重并且不占用太多空间。
我曾考虑将我的 if 语句集合更改为 switch 语句,但我发现 switch 语句无法像上面那样处理两个参数。如果有任何其他方式我可以重构我的代码但保持相同的功能,或者我是否坚持我的 if 语句集合?
编辑
已更新以包含我的 7 条语句中的两条。 请注意,我正在尝试减少我拥有的 IF 语句的数量,或者找到一种更聪明的方法来执行它们。我不想添加更多额外的代码行或 if 语句。
【问题讨论】:
-
我觉得在这里问这个问题:codereview.stackexchange.com会更好
-
向我们展示更多...这里没有很多工作要做。
-
正如我所说,它实际上是上述 IF 语句中的 7 个,但我会编辑我的帖子,并将帖子交叉到代码审查(谢谢你,不知道有一个!)
-
为了将来参考,在发布您的第二个 if 语句后,很明显它们并不相同,因此了解差异很重要。
-
是的,你是对的。应该放置多个省略的 if 语句。
标签: c# refactoring