How do you handle huge if-conditions?

后端 未结 21 1779
一向
一向 2021-01-31 17:14

It\'s something that\'s bugged me in every language I\'ve used, I have an if statement but the conditional part has so many checks that I have to split it over multiple lines, u

21条回答
  •  时光取名叫无心
    2021-01-31 17:56

    Separate the condition in several booleans and then use a master boolean as the condition.

    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)
    {
        // ...
    }
    

    Better yet:

    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)
         {
             // ...
         }
    }
    

    Make sure you give your variables name that actualy indicate intention rather than function. This will greatly help the developer maintaining your code... it could be YOU!

提交回复
热议问题