Friday, June 25, 2021
"Entropy is the price of a Structure". But sometimes, the price turns too high to pay. Is your codebase turning untestable, unreadable, and unmaintainable? Does your costs to add new features aren't meeting the ROIs. It's time to ask your manager to fund Refactoring!
In this demo-driven talk, using a real-world service, we shall identity some common reasons for a codebase to rot and how to weed them out using principles from Clean Architecture and Functional Programming, along with achieving 95% test coverage and ~50% reduction in Cognitive complexity (https://www.sonarsource.com/docs/CognitiveComplexity.pdf).
Audience & Take-aways
This applies to software developers at all levels. I use Java to demonstrate the code snippets, but this talk is about Software Design and Testing and is agnostic of programming language. The major take-aways for the audience are:
- Pragmatically apply the principles of Clean-Architecture and Functional programming in real-world refactoring.
- How to completely eliminate Exceptions from your code using ADTs (Algebraic Data Types).
- How to replace Shared Global mutable state on your Shared Code with Data Transformations.
- How separating out What-to-do from How-to-do can bring in a lot of flexibility to your code-base.
- How following all of the above organically boost your Testability without falling into any anti-patterns of testing.
Let's talk about Complexity and how to objectively measure the reduction we brought with our refactoring.
What is a monad? Do I need a Ph.D. to write in a functional style? How do I do that in Kotlin? And other questions that you were afraid to ask.
In this talk, we'll walk through Arrow Core, the functional companion to the Kotlin standard library. We'll cover both the concepts that every software engineer may add to their project right now and more advanced structures, starting from the non-empty list, going over Validated, and Either followed by monad comprehension.