Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SuitableJob
- def initialize(test_coverage, code_review_frequency, refactoring_frequency, senior_developer_count, pair_programming_frequency, commute_time)
- @test_coverage = test_coverage
- @code_review_frequency = code_review_frequency
- @refactoring_frequency = refactoring_frequency
- @senior_developer_count = senior_developer_count
- @pair_programming_frequency = pair_programming_frequency
- @commute_time = commute_time
- scoring_matricies
- minimum_acceptable_scores
- end
- def run
- code_quality_acceptable && commute_time_acceptable && training_environment_for_junior
- end
- def scoring_matricies
- @code_review_scores = { daily: 10, weekly: 7, monthly: 3, never: 0 }
- @refactoring_code_scores = { weekly: 10, bi_weekly: 5, monthly: 3, never: 0 }
- @pair_programming_scores = { daily: 10, weekly: 5, bi_weekly: 3, never: 0 }
- end
- def minimum_acceptable_scores
- @minimum_acceptable_code_quality_score = 6
- @minimum_acceptable_pair_programming_score = 5
- end
- def code_quality_acceptable
- code_quality_score >= @minimum_acceptable_code_quality_score
- end
- def code_quality_score
- (test_coverage_score + code_review_score + refactoring_code_score) / 3
- end
- def test_coverage_score
- case @test_coverage
- when 50..70
- 5
- when 71..100
- 10
- else
- 0
- end
- end
- def code_review_score
- @code_review_scores[@code_review_frequency]
- end
- def refactoring_code_score
- @refactoring_code_scores[@refactoring_frequency]
- end
- def commute_time_acceptable
- @commute_time <= 90
- end
- def training_environment_for_junior
- senior_developer_present && pair_programming
- end
- def senior_developer_present
- @senior_developer_count >= 1
- end
- def pair_programming
- pair_programming_score >= @minimum_acceptable_pair_programming_score
- end
- def pair_programming_score
- @pair_programming_scores[@pair_programming_frequency]
- end
- end
- s = SuitableJob.new(71, :weekly, :bi_weekly, 2, :daily, 45)
- puts s.test_coverage_score #10
- puts s.code_review_score #7
- puts s.refactoring_code_score #5
- puts s.senior_developer_present #true
- puts s.pair_programming_score #10
- puts s.commute_time_acceptable #true
- puts s.code_quality_acceptable #true
- puts s.training_environment_for_junior #true
- puts s.run #true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement