Class: ChurnVsComplexity::Timetravel::Serializer::QualityCalculator
- Inherits:
-
Object
- Object
- ChurnVsComplexity::Timetravel::Serializer::QualityCalculator
- Defined in:
- lib/churn_vs_complexity/timetravel/serializer/quality_calculator.rb
Instance Method Summary collapse
- #alpha_score(raw_churn, raw_complexity) ⇒ Object
- #beta_score(raw_churn, raw_complexity) ⇒ Object
-
#initialize(min_churn:, max_churn:, min_complexity:, max_complexity:) ⇒ QualityCalculator
constructor
A new instance of QualityCalculator.
Constructor Details
#initialize(min_churn:, max_churn:, min_complexity:, max_complexity:) ⇒ QualityCalculator
Returns a new instance of QualityCalculator.
9 10 11 12 13 14 |
# File 'lib/churn_vs_complexity/timetravel/serializer/quality_calculator.rb', line 9 def initialize(min_churn:, max_churn:, min_complexity:, max_complexity:) @min_churn = min_churn @max_churn = max_churn @min_complexity = min_complexity @max_complexity = max_complexity end |
Instance Method Details
#alpha_score(raw_churn, raw_complexity) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/churn_vs_complexity/timetravel/serializer/quality_calculator.rb', line 16 def alpha_score(raw_churn, raw_complexity) # harmonic mean of normalised churn and complexity churn = normalise(raw_churn, @min_churn, @max_churn, EPSILON) complexity = normalise(raw_complexity, @min_complexity, @max_complexity, EPSILON) (2 * churn * complexity) / (churn + complexity) end |
#beta_score(raw_churn, raw_complexity) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/churn_vs_complexity/timetravel/serializer/quality_calculator.rb', line 24 def beta_score(raw_churn, raw_complexity) # geometric mean of normalised churn and complexity churn = normalise(raw_churn, @min_churn, @max_churn, EPSILON) complexity = normalise(raw_complexity, @min_complexity, @max_complexity, EPSILON) Math.sqrt(churn * complexity) end |