Nicole Rauch is an independent software developer and development coach with a solid background in compiler construction and formal methods. Her focus is on Specification by Example and Domain-Driven Design as well as the restructuring of large Java legacy code applications. Nonetheless, her secret love is for functional programming. Also, she took part in conducting a number of self-organized conferences related to software craftsmanship and agile coaching, e.g. SoCraTes conference. She is one of the initiators of Softwerkskammer, the german-speaking Software Craftsmanship community.
This workshop is intended to introduce the participants to a systematic and structured way of performing large restructurings and of introducing Domain-Driven Design patterns in object-oriented code.
The restructuring strategy presented in this workshop addresses a common coding pattern: Fields in objects are written from multiple locations. The effects: The value of a field at a given time is not clear, and tracking back all the methods that write the field is difficult. We call this way of coding “Push” because the code actively pushes its results into some object’s fields. The resulting code is rather fragile and tends to be buggy.
Instead, the output values can be calculated on-demand. This way, the domain logic for each value is clearly visible and very descriptive. It is encapsulated in entities and aggregates. We call this style “Pull” because the values are pulled by other parts of the code. The resulting code has proven to be readable, understandable, testable, changeable and extensible.
This workshop shows how a large restructuring can be performed in a systematic way. The code becomes object-oriented and clean, with small methods in objects communicating with each other, in one word: the code has become “domain-driven”.
In order to participate in the workshop, it is helpful to have the following codebase already installed and set up in an IDE of your choice: https://github.com/NicoleRauch/RefactoringLegacyCode (and please make sure to pull again in the week before the conference to be up-to-date with short-term changes!)