C#C
C#3y ago
SWEETPONY

How to optimize this?

I have following:
using System;

namespace SquareCalculus
{
    internal class FigureTriangle : IFigure
    {
        private readonly double _sideA;
        private readonly double _sideB;
        private readonly double _sideC;

        public FigureTriangle(
            double sideA,
            double sideB,
            double sideC)
        {
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideA, nameof(sideA));
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideB, nameof(sideB));
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideC, nameof(sideC));

            _sideA = sideA;
            _sideB = sideB;
            _sideC = sideC;
        }

        public double CalculateSquare()
        {
            var perimetr = (_sideA + _sideB + _sideC) / 2;

            var square = Math.Sqrt(perimetr
                * (perimetr - _sideA)
                * (perimetr - _sideB)
                * (perimetr - _sideC));

            return square;
        }

        public bool IsRightTriangle()
        {
            var sides = new double[] { _sideA, _sideB, _sideC };

            Array.Sort(sides);

            return Math.Pow(sides[2], 2) == Math.Pow(sides[0], 2) + Math.Pow(sides[1], 2);
        }
    }
}


Imagine I will call IsRightTriangle twice with the same parameters. It is not optimal to do sorting etc again again.. So how can I fix it?
Was this page helpful?