I’ve written about refactoring Redmine here but I feel I haven’t explained why refactoring is important. The most common reason is to remove code duplication. Code Duplication Code duplication occurs when an application has two sections of code that are identical or almost identical. Sometimes this happens because the application requires the duplication but most …
Tag: ruby
Redmine Refactor #87: Extract Method Body to IssuesController#perform_move
With this refactoring I start making some major changes to IssuesController#move and #peform_move. Before 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class IssuesController params, :issue => issue, :target_project => @target_project, :copy => !!@copy }) if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes …
Redmine Refactor #86: Extract Method to split IssuesController#move into two actions
Now I want to start refactoring IssuesController#move so it’s two separate actions; one to display the form and one to do the actual move. This will make adding more RESTful urls and APIs to Redmine easier. To start, I create a second method that wraps the existing #move method so I can change the routing …
Redmine Refactor #85: Extract Method in IssuesController#move
Whenever I work with legacy code I always turn to extract method and move method for most of my refactoring. Redmine’s IssuesController is no exception. Using extract method on the #move action I was able to extract several lines of code deep in the method and also remove a temporary variable. Before 1 2 3 …
Redmine Refactor #84: Extract Method in IssuesController#context_menu
I’m starting to refactor Redmine’s IssuesController again. It’s a very cluttered controller that hasn’t been refactored as it’s grown, so I’ll need to build up my confidence with it over the next few refactorings. To start I used extract method to pull out a new useful utility method to the ApplicationController. Before 1 2 3 …