Module: ArchUnit::Metrics::Calculation::Distance
- Defined in:
- lib/archunit/metrics/calculation/distance.rb
Overview
Robert C. Martin's abstractness, instability, distance, and zone calculations.
Constant Summary collapse
- PAIN_LIMIT =
0.3- USELESSNESS_LIMIT =
0.7- SIZE_NORMALIZATION_LINES =
100.0- MAXIMUM_SIZE_DISCOUNT =
0.5- CALCULATIONS =
{ abstractness: ->(info) { abstractness_value(info) }, instability: ->(info) { instability_value(info) }, distance_from_main_sequence: ->(info) { distance_value(info) }, coupling_factor: ->(info) { coupling_factor_value(info) }, normalized_distance: ->(info) { normalized_distance_value(info) } }.freeze
Class Method Summary collapse
Class Method Details
.in_zone?(distance_info, zone) ⇒ Boolean
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/archunit/metrics/calculation/distance.rb', line 34 def in_zone?(distance_info, zone) abstractness = abstractness_value(distance_info) instability = instability_value(distance_info) case zone when :pain abstractness < PAIN_LIMIT && instability < PAIN_LIMIT when :uselessness abstractness > USELESSNESS_LIMIT && instability > USELESSNESS_LIMIT else raise ArgumentError, "unknown architectural zone: #{zone.inspect}" end end |