CSC/ECE 517 Spring 2023 -E2326 Refactor questionnaires controller.rb
PROJECT OVERVIEW
Background
In Expertiza, Questionnaire is the superclass for all kinds of questionnaires and rubrics—rubrics for evaluating submissions and teammate contributions, and taking quizzes and surveys. All of these are subclasses of Questionnaire. questionnaires_controller.rb is charged with creating, displaying, and managing Questionnaires. Because it is used so widely, malfunctions could cause bugs in many parts of the system; hence it is especially important that the code be clear. In recent years, questionnaires_controller.rb has been refactored repeatedly. It is a lot clearer than it used to be. But rough edges still remain. Please look at the comments I made on your code. I think it can be simplified considerably. Is it really necessary to use so many instance variables? Would temporary variables suffice? question.rb contains a large number of constants. It is not clear what they are used for. I have also made several comments about how the code could be made clearer. There is a questionnaires_controller, but no questions_controller. The questionnaires_controller creates Question objects. This is not elegant, because a controller should only create objects of one type, the type of objects it controls.