Search code examples
c#refactoring

Refactoring big if else stament in C# code


I have four of this really long if-else code. How can I refactor this code?

if (objectcameraangle > 140)
{
  if (Vector3.Distance(joint1, joint2) > 0.5)
  {
    Rfootikcontroller.transform.Translate((scx / 10000), scy / 10000, 0);
  }
  else
  {
    Rfootikcontroller.transform.Translate((scx / 800), scy / 800, 0);
  }
}
else if (objectcameraangle < 35)
{
  if (Vector3.Distance(joint1, joint2) > 0.5)
  {
    Rfootikcontroller.transform.Translate((-scx / 10000), scy / 10000, 0);
  }
  else
  {
    Rfootikcontroller.transform.Translate((-scx / 800), scy / 800, 0);
  }
}
else if (objectcameraangle > 35 && objectcameraangle < 140 && signed > 0)
{
  if (Vector3.Distance(joint1, joint2) > 0.5)
  {
    Rfootikcontroller.transform.Translate(0, scy / 10000, (-scx / 10000));
  }
  else
  {
    Rfootikcontroller.transform.Translate(0, scy / 800, (-scx / 800));
  }
}

How I can rewrite it to something more nice . Trying to learn here something new . Thanks for help.


Solution

  • Something like this?

    var distance = Vector3.Distance(joint1, joint2);
    var divisor = distance > 0.5 ? 10000 : 800;
    
    var scx2 = scx / divisor;
    var scy2 = scy / divisor;
    
    if (objectcameraangle < 35)
    {
        Rfootikcontroller.transform.Translate(-scx2, scy2, 0);
    }
    else if (objectcameraangle < 140)
    {
        if (signed > 0)
            Rfootikcontroller.transform.Translate(0, scy2, -scx2);
    }
    else
    {
        Rfootikcontroller.transform.Translate(scx2, scy2, 0);
    }