Refactoring Legacy Code, September 14 2016
We all live with legacy code, that is code that has gone old and for some reasons is hard to maintain. The cost per change is increasing exponentially and threatens the very existence of our business.
This course aim to teach you the basics of attacking this problem. You will get hands-on experience that lifts your ability to cope with monolithic systems that are far from tested and where knowledge about their expected behavior has become foggy.
Refactoring is described at the mini, macro and maxi level. At the mini level, you constantly refactor the code for better maintainability. Here you use refactoring tools that are available in your IDE. Macro level is when you need to make a larger change, involving a number of steps. Planning is of essence and the Mikado Method helps you find your way in smaller steps while not losing sight of your goal or ending up with too many changes ongoing at the same time. When you decided to replace a whole system, such as a mainframe based Cobol system, you are at the maxi level. Here the Strangler Application Pattern is an option that you have to know about.
Testing is essential to enable refactoring so we will start with a quick introduction to test driven development, TDD.
See also this blog post on dependency breaking and characterization tests, The Sword and the Shield.
Note: Denna kurs hålls på svenska ifall samtliga deltagare är svensktalande. Allt presentationsmaterial är på engelska.
Who this course is for
Anybody who wants to learn or get better at the technical practices of Agile software development. You will learn to deliver higher quality code in shorter intervals with more customer communication.
Learning outcomes for this course
- Why agile development requires automated testing
- The case for TDD, test driven development
- Test doubles for mocking
- Refactoring at mini, macro and maxi level
- Refactoring patterns and tools
- Dependency breaking and characterization tests
- The Mikado method
- Strangler application pattern
- Basic knowledge of Java. This is not primarily a programming course, so the programming tasks will be pretty simple. If you are not primarily a Java developer, see this as an opportunity. You will work with others who are better at it, and you will learn! But make sure you at least know the basics.
- A development environment. To avoid wasting precious course time with technical setup issues, we want you to set up your technical development environment in advance.