Essential Code Craft - Refactoring
Essential Code Craft - Refactoring
Share this event
Tues June 16th & Sat June 20th
£99 + UK VAT
Refactoring is a foundational skill for software developers. The ability to reshape code to easily accommodate changes while keeping the software working and shippable at all times is hugely valuable in pretty much all approaches to developing software.
It's unfortunate, then, that the vast majority of developers have not only never done refactoring, but have never even seen it being done - despite how many of us claim to do it. "Refactoring" is one of the most overused, misunderstood and abused terms in our field.
In this workshop, you will learn how to reshape code throughout development - and not just at the end! - without changing what it does in sequences of small, predictable, tested and version-controlled changes.
You will learn to recalibrate your sense of what a "safe change" is using a technique called test && commit || revert
You will learn to recognise common "code smells" that make our code harder to change - that make it more rigid and more brittle as it grows.
You will learn a vocabulary of fundamental refactorings that preserve software behaviour, and see which of those can be performed automatically by your IDE, as well as learning how to do some safely without automation when needed.
You will learn how to plan and execute long-form refactorings by composing sequences of fundamental refactorings, ensuring that the software works throughout.
You will learn how to refactor legacy code that lacks fast-running automated tests in order to make it unit-testable and change it safely.
The emphasis will be on learning by doing, with succinct practical instruction and guidance from a 28-year refactoring practitioner and teacher.
You will work in pairs in your chosen programming language, swapping through Continuous Integration into a shared GitHub* repository after each refactoring goal's been achieved, reinforcing the relationship between refactoring, version control and CI.
In the exercise, you will refactor pre-prepared code written in either Java, Kotlin, C#, Python, JavaScript or TypeScript, so you'll need to be proficient in at least one of those languages. When you register, you'll be asked to indicate which of those you can work in to help plan the strongest pairings.
IDEs with good automated refactoring support for your chosen language(s) are highly recommended.
I'll demonstrate in either Java, Python, JS or C#, depending on which of those is listed most often by registrants. I'll be using a JetBrains IDE, and you'll see why.
* Requires an active personal GitHub account
This workshop is run from London, UK, and includes a 15-minute break