我有
形式的代码for each item x in array
if x in areaA
put x in aArray
if x in areaB
put x in bArray
if x in areaC
put x in cArray
if x in area1
put x in 1Array
if x in area2
put x in 2Array
if x in area3
put x in 3Array
...
if x in area20
put x in 20Array
例如,其中x可以在A和3中。检查是否该项目在他们各自的区域内。
此代码有23个非常相似的查看检查和23行将项添加到相关数组中,因此在我看来应该有一些明显的方法来清理它。
如何重构这一点以减少支票数量?
答案 0 :(得分:0)
您可以创建一个函数,其中包含x,a和数组作为参数,检查x是否在a中,如果不是则将其放入数组中。
此外,您可以在没有外部循环
的循环中循环遍历数组答案 1 :(得分:0)
我通过将要检查的区域放入数组,然后循环遍历每个数组来解决这个问题:
for each item in array
for each area in areaABC
if item in area
put item in arrayABC[ foreach index]
break
for each area in area123
if item in area
put item in array123[ foreach index]
break
因为我使用的特定语言具有if-then-exitWith结构(类似于使用break)并且还允许您访问foreach循环索引,所以上述方法似乎是最简洁的方法。