首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在算法设计中如何避免嵌套IF条件

在算法设计中如何避免嵌套IF条件
EN

Stack Overflow用户
提问于 2014-10-23 00:58:28
回答 1查看 178关注 0票数 0

对于具有多个IF条件的算法,我有以下伪码。如何避免这样的嵌套使用一些检查或更有效的方法。

如果(没有房子)那么 如果(公路==1)那就做点什么 如果(公路==2)那就做点什么 如果(公路==3)那就做点什么 如果结束的话 如果(道路==4)和(有房子),那么做一些事情,如果

EN

回答 1

Stack Overflow用户

发布于 2014-10-23 01:52:55

我可能更关心可读性而不是效率,除非您已经分析了代码并发现它是一个瓶颈。

为了提高可读性,可以使用实现公共接口的类数组。在伪代码中,给定这个接口:

代码语言:javascript
运行
复制
interface Callback
{
    void DoJob()
}

以及实现接口的各种类:

代码语言:javascript
运行
复制
class DoThing1 implements Callback { public void DoJob() { .. } }
class DoThing2 implements Callback { public void DoJob() { .. } }

然后在您的主代码中有一个这些回调的数组:

代码语言:javascript
运行
复制
Callback m_roadHandlers[MAX_HANDLERS]

然后这样称呼他们:

代码语言:javascript
运行
复制
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#中,您可以在同一个类中使用委托和传递方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26519619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档