首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你如何处理巨大的if条件?

你如何处理巨大的if条件?
EN

Stack Overflow用户
提问于 2008-08-08 16:45:59
回答 20查看 5.2K关注 0票数 29

在我使用的每一种语言中,这都是困扰我的问题,我有一个if语句,但条件部分有太多的检查,我不得不将它分成多行,使用嵌套的if语句,或者只是接受它很丑陋,然后继续我的生活。

有没有你发现的其他方法,可能对我和其他遇到同样问题的人有用?

例如,所有内容都在一行上:

代码语言:javascript
复制
if (var1 = true && var2 = true && var2 = true && var3 = true && var4 = true && var5 = true && var6 = true)
{

例如,多行:

代码语言:javascript
复制
if (var1 = true && var2 = true && var2 = true
 && var3 = true && var4 = true && var5 = true
 && var6 = true)
{

示例-嵌套:

代码语言:javascript
复制
if (var1 = true && var2 = true && var2 = true && var3 = true)
{
     if (var4 = true && var5 = true && var6 = true)
     {
EN

Stack Overflow用户

回答已采纳

发布于 2008-08-08 16:54:30

将条件分成几个布尔值,然后使用主布尔值作为条件。

代码语言:javascript
复制
bool isOpaque = object.Alpha == 1.0f;
bool isDrawable = object.CanDraw && object.Layer == currentLayer;
bool isHidden = hideList.Find(object);

bool isVisible = isOpaque && isDrawable && ! isHidden;

if(isVisible)
{
    // ...
}

更好的是:

代码语言:javascript
复制
public bool IsVisible {
    get
    {
        bool isOpaque = object.Alpha == 1.0f;
        bool isDrawable = object.CanDraw && object.Layer == currentLayer;
        bool isHidden = hideList.Find(object);

        return isOpaque && isDrawable && ! isHidden;
    }
}

void Draw()
{
     if(IsVisible)
     {
         // ...
     }
}

确保你给你的变量命名实际表明意图而不是功能。这将极大地帮助开发人员维护您的代码……可能是你!

票数 61
EN
查看全部 20 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6126

复制
相关文章

相似问题

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