Refactoring is the process of changing software without altering its external behavior. Refactoring software to make it maintainable and extendable has become a recognized best practice and has been incorporated into many Agile practices such as Scrum, TDD and XP. Refactoring improves the structure of the design of a system to allow for enhancements and to make maintenance easier. This talk will present an overview of how to recognize when code needs to be refactored (code smells) and the steps for common refactorings including the refactorings provided by tools such as those in the Refactoring Browser. It is important to refactor software in a disciplined way to minimize disruptions and to allow the system to safely evolve. I will outline my top-ten code smells, when to refactor, and some safe refactorings that can almost always be done during the regular development process.
Joseph W. Yoder (agilist, computer scientist, and pattern author) is the founder and principal of The Refactory (www.refactory.com), a company focused on software architecture, design, implementation, consulting, and mentoring on all facets of software development. Joseph is an international speaker, long standing member of the ACM, and the President of The Hillside Group, a group dedicated to improve the quality of software. Joseph is an author of the Big Ball of Mud pattern, which illuminates many fallacies in software architecture. Joseph (Joe) is an internationally recognized leader in many facets of software development specifically with Clean Design and Agile Best Practices. Joe's work has included working with both large and small companies and working with startup organizations. Joe has many years of practical hands-on experience where he has conducted architecture and design reviews of enterprise applications and systems, reviewed the design and implementation of a various systems and frameworks, provided assessments and `detailed analysis of existing systems, assisted with framework and object-oriented development, and leading various successful agile teams. Joe has recently been working with organizations and thought leaders on the best practices for including quality aspects throughout the complete software life-cycle. In 2015 he won the New Directions award with a colleague at Saturn 2015, given to the presentation that best describes innovative new approaches and thought leadership in the application of architecture-centric practices for the presentation “QA to AQ: Shifting from Quality Assurance to Agile Quality” (https://insights.sei.cmu.edu/saturn/2015/05/saturn-2015-awards-conferred.html).