This talk wants to demonstrate how object-oriented principles can only get you so far in simplifying your Java design. Starting with a clean yet completely imperative code base written in Java, I will explain how we can improve the code by applying functional principles—primarily extracting functions as objects and passing them around.
Along the way, I will be pointing out how each refactor simplifies the code according to one or more of the four rules. We will start by removing duplication, even where duplication isn’t apparent from an OO point of view, before making the code clearer by replacing the language of the system by the language of our domain. Along the way, we’ll reduce the number of moving parts and increase test coverage.
I will also show existing libraries in Java and C# that can help you refactor your own code to be smaller and more understandable. This is a live coding presentation. There will be no slides, just lots of refactoring on a projector. You will not need any understanding of functional programming in order to attend.
Video producer: http://itakeunconf.com