对于具有多个IF
条件的算法,我有以下伪码。如何避免这样的嵌套使用一些检查或更有效的方法。
如果(没有房子)那么 如果(公路==1)那就做点什么 如果(公路==2)那就做点什么 如果(公路==3)那就做点什么 如果结束的话 如果(道路==4)和(有房子),那么做一些事情,如果
发布于 2014-10-23 01:52:55
我可能更关心可读性而不是效率,除非您已经分析了代码并发现它是一个瓶颈。
为了提高可读性,可以使用实现公共接口的类数组。在伪代码中,给定这个接口:
interface Callback
{
void DoJob()
}
以及实现接口的各种类:
class DoThing1 implements Callback { public void DoJob() { .. } }
class DoThing2 implements Callback { public void DoJob() { .. } }
然后在您的主代码中有一个这些回调的数组:
Callback m_roadHandlers[MAX_HANDLERS]
然后这样称呼他们:
if (house and road == 4)
m_roadHandlers[road].DoJob();
else if (no house and road >= 1 and road <= 3)
m_roadHandlers[road].DoJob();
您标记了Java,所以我如前所述说明了它,因为Java还没有方法回调的概念,据我所知,您无法传递一个方法(我使用Java已经有一段时间了),所以您可能不得不将类传递给回调。在C#中,您可以在同一个类中使用委托和传递方法。
https://stackoverflow.com/questions/26519619
复制相似问题