Refactoring to Clean Code
One of the most painful activities in software development is maintaining extremely poor legacy code! Moreover, teams transitioning to Agile suffer from challenges like moving towards shorter iterations with shorter time for regression testing, trying to cover poor code with automated tests, prioritizing which refactorings to apply on which code, and convincing managers with the value of refactoring.
In this workshop, participants will be presented to a simple, sustainable, and stepwise roadmap which tackles these challenges. This approach divides the effort to refactor legacy code into three stages:
- Quick-wins; simple and least risky enhancements
- Divide-and-conquer the code into functional, utility, and architectural components, with identified and clear component interfaces
- Inject-quality-in the code by wrapping components with automated tests
This approach has been applied to real life projects. Results were documented in an experience report which was published and presented several times in regional and international conferences like Agile2013, Agile2014, and AgileAfrica2014.
Participants will receive a piece of cluttered and spaghetti code written in Java; and will go through the roadmap to refactor this code using tools like Eclipse, Metrics, UCDetector, and ConQAT. Exercises include:
- Detect and remove dead code
- Detect and remove code duplicates
- Use out-of-the-box refactorings provided by most famous IDE's like Eclipse
- Re-organize / Divide code into code components and apply architectural checks and refactorings on specific design violations
- Continuously calculating code metrics and making sure that code is improving
Throughout the workshop, participants will be introduced to many good (and bad) practices of legacy code refactoring and relevant code metrics
Who Should Attend
All development team members will find great value in this training. Producing good code requires good development practices whether you are maintaining old code or developing new code. Attendees will also get introduced to basic software design principles which is taken into consideration while designing software products.
- Software developers
- Project technical leaders
- Development managers
- Basic programming experience with a modern programming language like Java, C#, PHP, Ruby, etc.
What do trainees say about this workshop?
"A very enlightening workshop! The importance of refactoring code was greatly realized during this workshop"
"A very informative workshop. Very useful. Thank you!"
"Helpful workshop. Fully appreciated the importance of code refactoring techniques"
"Very instructive course. I have learned how to refactor a code using modern tools than manual refactoring"
- Challenges of maintaining legacy code
- Patterns (and anti-patterns) of legacy code refactoring
- Simple, sustainable, and stepwise refactoring roadmap
- What makes refactoring unsustainable?
- Quick wins - first steps
- Divide and conquer - Introduce structure
- Inject quality in - Make code self-testing
- How and what tools could help in refactoring
- Experience refactoring on real code!