Was & Warum
indentation.ex:52-55 und identifier_length_variance.ex:32-35 bauen dieselbe Populations-Varianz von Hand:
variance =
values
|> Enum.reduce(0.0, fn v, acc -> acc + :math.pow(v - mean, 2) end)
|> Kernel./(length(values))
CodeQA.Math (lib/codeqa/math.ex) existiert genau für solche geteilten Mathe-Utilities, enthält aber bisher nur linear_regression und Pearson-Korrelation — keine Varianz/StdDev.
Umsetzung
CodeQA.Math.population_variance(values, mean) und CodeQA.Math.std_dev(variance) ergänzen.
- Beide Module darauf umstellen.
- Direkt-Tests für die Helper in
CodeQA.Math (bisher hat das Modul vermutlich keine eigenen Tests — kurz prüfen).
Nutzen
~12 Zeilen Duplikation weg, Varianz an einer Stelle definiert + testbar. Identischer Algorithmus an beiden Stellen → sehr niedriges Risiko.
Was & Warum
indentation.ex:52-55undidentifier_length_variance.ex:32-35bauen dieselbe Populations-Varianz von Hand:CodeQA.Math(lib/codeqa/math.ex) existiert genau für solche geteilten Mathe-Utilities, enthält aber bisher nurlinear_regressionund Pearson-Korrelation — keine Varianz/StdDev.Umsetzung
CodeQA.Math.population_variance(values, mean)undCodeQA.Math.std_dev(variance)ergänzen.CodeQA.Math(bisher hat das Modul vermutlich keine eigenen Tests — kurz prüfen).Nutzen
~12 Zeilen Duplikation weg, Varianz an einer Stelle definiert + testbar. Identischer Algorithmus an beiden Stellen → sehr niedriges Risiko.