User:Avarote: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
(Blanked the page)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
== About Expertiza ==


Expertiza is a Ruby on Rails based Open Source project. It is a collaboration tool which lets users with different roles (student, instructor, teaching assistant) to collaborate on a course in an institution. A collaboration could be for an assignment where students teams up for an assignment and instructors grades them on the basis of their submission. Students could review other's works and give feedbacks as well.
'''Github link'''
    https://github.com/expertiza/expertiza
'''Wiki link'''
    http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation
== Problem Statement ==
'''Background'''
response.rb is the default class to interact with the responses table, which stores all answers of each questionnaire.
'''What’s wrong with it?'''
response.rb is a fairly complex file. It contains a lot of methods that are long and hard to understand. These methods need to be broken down into simpler and more specific methods that are easier to read/understand. Also, the few instances of code duplication that exist should be removed.
'''Problems'''
''Problem 1:Refactor display_as_html method''
  Write failing tests first
  Split into several simpler methods and assign reasonable names
  Extract duplicated code into separate methods
''Problem 2:Refactor self.get_volume_of_review_comments method''
  Write failing tests first
  Convert duplicated code into loop
''Problem 3:Rename method and change all other places it is used''
  Write failing tests first
  get_total_score → total_score
  get_average_score → average_score
  get_maximum_score → maximum_score
''Problem 4:Use sort_by(&:seq) instead of sort { |a, b| a.seq <=> b.seq }''
  Write failing tests first
''Problem 5:Use find_by instead of where.first''
Write failing tests first
''Problem 6:Complete the pending tests in grades_controller_spec.rb, and write integration tests for newly-created methods. Refactor corresponding methods, and only then finish pending tests.''
== Files Modified ==
For Problem 1:
''app/models/response.rb''
For Problem 2:
''app/models/response.rb''
For Problem 3:
''app/controllers/assessment360_controller.rb''
''app/controllers/popup_controller.rb''
''app/helpers/review_mapping_helper.rb''
''app/models/collusion_cycle.rb''
''spec/models/response_spec.rb''
For Problem 4:
''app/models/response.rb''
For Problem 5:
''app/models/response.rb''
== Issue and Solution ==
Problem 1:
The method display_as_html is complex. Many functions are embedded in to a single method. 
Solution:
The method has been broken in to smaller and simpler parts and have been given the reasonable names
Image
Problem 2:
The method has repeated lines of code.
Solution:
The loop has been included in the method instead of writing the same lines of code.
Image
Problem 3:
Changing the method names
Solution:
Image
Problem 4:
Use sort_by(&:seq) instead of sort { |a, b| a.seq <=> b.seq }
Solution:
Image
Problem 5:
find_by instead of where.first
Solution:
Image

Latest revision as of 23:03, 25 October 2017