public double GetDistanceTo(CodeModel codeModel) { if (!HasEquivalentMetricsWith(codeModel)) { throw new Exception("Разные метрики моделей исходного кода."); } return(Math.Sqrt(MetricNames.Sum(name => Math.Pow(GetMetric(name) - codeModel.GetMetric(name), 2)))); }
private bool HasEquivalentMetricsWith(CodeModel codeModel) { var anotherMetricNames = codeModel.MetricNames; var thisMetricNames = MetricNames; if (anotherMetricNames.Length != thisMetricNames.Length) { return(false); } foreach (var metricName in thisMetricNames) { if (!anotherMetricNames.Contains(metricName)) { return(false); } } return(true); }