Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. class SuitableJob
  2.  
  3. def initialize(test_coverage, code_review_frequency, refactoring_frequency, senior_developer_count, pair_programming_frequency, commute_time)
  4.  
  5. @test_coverage = test_coverage
  6. @code_review_frequency = code_review_frequency
  7. @refactoring_frequency = refactoring_frequency
  8. @senior_developer_count = senior_developer_count
  9. @pair_programming_frequency = pair_programming_frequency
  10. @commute_time = commute_time
  11. scoring_matricies
  12. minimum_acceptable_scores
  13. end
  14.  
  15. def run
  16. code_quality_acceptable && commute_time_acceptable && training_environment_for_junior
  17. end
  18.  
  19. def scoring_matricies
  20. @code_review_scores = { daily: 10, weekly: 7, monthly: 3, never: 0 }
  21. @refactoring_code_scores = { weekly: 10, bi_weekly: 5, monthly: 3, never: 0 }
  22. @pair_programming_scores = { daily: 10, weekly: 5, bi_weekly: 3, never: 0 }
  23. end
  24.  
  25. def minimum_acceptable_scores
  26. @minimum_acceptable_code_quality_score = 6
  27. @minimum_acceptable_pair_programming_score = 5
  28. end
  29.  
  30. def code_quality_acceptable
  31. code_quality_score >= @minimum_acceptable_code_quality_score
  32. end
  33.  
  34. def code_quality_score
  35. (test_coverage_score + code_review_score + refactoring_code_score) / 3
  36. end
  37.  
  38. def test_coverage_score
  39. case @test_coverage
  40. when 50..70
  41. 5
  42. when 71..100
  43. 10
  44. else
  45. 0
  46. end
  47. end
  48.  
  49. def code_review_score
  50. @code_review_scores[@code_review_frequency]
  51. end
  52.  
  53. def refactoring_code_score
  54. @refactoring_code_scores[@refactoring_frequency]
  55. end
  56.  
  57. def commute_time_acceptable
  58. @commute_time <= 90
  59. end
  60.  
  61. def training_environment_for_junior
  62. senior_developer_present && pair_programming
  63. end
  64.  
  65. def senior_developer_present
  66. @senior_developer_count >= 1
  67. end
  68.  
  69. def pair_programming
  70. pair_programming_score >= @minimum_acceptable_pair_programming_score
  71. end
  72.  
  73. def pair_programming_score
  74. @pair_programming_scores[@pair_programming_frequency]
  75. end
  76.  
  77. end
  78.  
  79. s = SuitableJob.new(71, :weekly, :bi_weekly, 2, :daily, 45)
  80. puts s.test_coverage_score #10
  81. puts s.code_review_score #7
  82. puts s.refactoring_code_score #5
  83. puts s.senior_developer_present #true
  84. puts s.pair_programming_score #10
  85. puts s.commute_time_acceptable #true
  86. puts s.code_quality_acceptable #true
  87. puts s.training_environment_for_junior #true
  88. puts s.run #true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement