• Acters@lemmy.world
    link
    fedilink
    English
    arrow-up
    7
    ·
    edit-2
    14 hours ago

    I should have created a local variable to store the result variable and return after the if statements. I just couldn’t help to make it look partially nice. My brain just doesn’t think at this high caliber of LOC optimizations.

    New optimized LOC version:

    internal static bool AreBooleansEqual(bool orig, bool val)
    {
        bool result;
        if(orig) 
        {
            if(val)
            {
                result = false;
            }
            else
            {
                result = true;
            }
        }
        else
        {
            if(val)
            {
                result = true;
            }
            else
            {
                result = false;
            }
        }
        return result;
    }
    

    My previous LOC: 12
    New LOC version: 27

    • servobobo@feddit.nl
      link
      fedilink
      English
      arrow-up
      3
      ·
      8 hours ago

      Surely we could optimize the return value with a switch statement and store the result as an integer to hide the compiler warning about our clearly correct code:

      internal static bool AreBooleansEqual(bool orig, bool val)
      {
          int result;
          if(orig) 
          {
              if(val)
              {
                  result = 0;
              }
              else
              {
                  result = 1;
              }
          }
          else
          {
              if(val)
              {
                  result = 1;
              }
              else
              {
                  result = 0;
              }
          }
          switch (result)
          {
               case(1):
                   return true;
               case(0):
                   return false;
               default:
                   return AreBooleansEqual(orig, val);
          }
      }
      

      New LOC: 35

      • InFerNo@lemmy.ml
        link
        fedilink
        English
        arrow-up
        2
        ·
        6 hours ago

        Make the input variables nullable, then add checks if the values are null, then assign default values if they are, otherwise continue with the passed values.