SlideShare a Scribd company logo
@coduinix
MIKADO AND THE ART OF
REFACTORING
- Hinse ter Schuur
@coduinix
GOT STUCK?
@coduinix
WHO AM I?
{
"name": "Hinse ter Schuur",
"alias": "Family man",
"role": "Software Engineer",
"company": "SDB Java",
"expertise": ["Java", "Scala"],
"clients": ["ING", "Port of Rotterdam"]
}
@coduinix
REFACTORING
@coduinix
REFACTORING (NOUN)
Martin Fowler. Refactoring: Improving the Design of Existing Code
a change made to the internal
structure of so ware to make it easier
to understand and cheaper to modify
without changing its observable
behavior.
@coduinix
REFACTORING (VERB)
Martin Fowler. Refactoring: Improving the Design of Existing Code
to restructure so ware by applying a
series of refactorings without changing
its observable behavior.
@coduinix
IMPROVE
@coduinix
DESIGN
@coduinix
EXISTING CODE
@coduinix
HOW TO
@coduinix
WELL-DEFINED
@coduinix
AUTOMATED
@coduinix
USE FEEDBACK
@coduinix
THREE TYPES
@coduinix
THREE TYPES
@coduinix
THREE TYPES
@coduinix
SEPARATE ACTIVITY
@coduinix
YOU CAN GET LOST
@coduinix
WHAT THEN?
@coduinix
THE MIKADO METHOD
Ola Ellnestam & Daniel Brolund
@coduinix
THE GAME
@coduinix
SET A GOAL
@coduinix
EXPERIMENT
@coduinix
VISUALIZE
@coduinix
UNDO
$ git reset --hard
@coduinix
THE METHOD
Set a goal
Experiment
Visualize
Undo
@coduinix
EXAMPLE
@coduinix
CURRENT STATE
@coduinix
DEMO
@coduinix
MY EXPERIENCE
@coduinix
WHEN TO USE?
@coduinix
WHAT IF...
@coduinix
BREADTH OR DEPTH-FIRST
@coduinix
WHEN TO MERGE?
@coduinix
WRAPPING UP
@coduinix
COMMIT OFTEN
@coduinix
REVERT
@coduinix
VISUALIZE
@coduinix
FOCUS ON THE GOAL
@coduinix
DON'T ANALYZE TOO MUCH
@coduinix
THANK YOU!
Questions? Just ask:
In person
Via Twitter - @coduinix
@coduinix
REFERENCES
Ola Ellnestam & Daniel Brolund. The Mikado Method
Martin Fowler. Refactoring: Improving the Design of
Existing Code
Michael Feathers. Working Effectively with Legacy
Code
Your favourite IDE. Keymap reference

More Related Content

Similar to Mikado and the Art of Refactoring (JFall 2019)

Dataiku meetup 12 july 2018 Amsterdam
Dataiku meetup 12 july 2018 AmsterdamDataiku meetup 12 july 2018 Amsterdam
Dataiku meetup 12 july 2018 Amsterdam
Longhow Lam
 
Writing Code for Humans, not Computers
Writing Code for Humans, not ComputersWriting Code for Humans, not Computers
Writing Code for Humans, not Computers
René Cacheaux
 
Importing Code and Existing Containers to OpenShift - Minneapolis Docker Meet...
Importing Code and Existing Containers to OpenShift - Minneapolis Docker Meet...Importing Code and Existing Containers to OpenShift - Minneapolis Docker Meet...
Importing Code and Existing Containers to OpenShift - Minneapolis Docker Meet...
Keith Resar
 
Simple REST-APIs with Dropwizard and Swagger
Simple REST-APIs with Dropwizard and SwaggerSimple REST-APIs with Dropwizard and Swagger
Simple REST-APIs with Dropwizard and Swagger
LeanIX GmbH
 
Studio 5000® Application Code Manager: Introduction and Demonstration
Studio 5000® Application Code Manager: Introduction and DemonstrationStudio 5000® Application Code Manager: Introduction and Demonstration
Studio 5000® Application Code Manager: Introduction and Demonstration
Rockwell Automation
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
Ross Kukulinski
 
Html5 viewer HTML5 office kukudocs
Html5 viewer HTML5 office kukudocsHtml5 viewer HTML5 office kukudocs
Html5 viewer HTML5 office kukudocs
kukudocs
 
Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...
Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...
Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...
Codemotion
 
How InfluxDB Enables NodeSource to Run Extreme Levels of Node.js Processes
How InfluxDB Enables NodeSource to Run Extreme Levels of Node.js ProcessesHow InfluxDB Enables NodeSource to Run Extreme Levels of Node.js Processes
How InfluxDB Enables NodeSource to Run Extreme Levels of Node.js Processes
InfluxData
 
Keedio Stack: BDaaS deployment for dummies by Alessio Comisso at Big Data Spa...
Keedio Stack: BDaaS deployment for dummies by Alessio Comisso at Big Data Spa...Keedio Stack: BDaaS deployment for dummies by Alessio Comisso at Big Data Spa...
Keedio Stack: BDaaS deployment for dummies by Alessio Comisso at Big Data Spa...
Big Data Spain
 
Wavect - Your long-term partner for sophisticated and maintainable software
Wavect - Your long-term partner for sophisticated and maintainable softwareWavect - Your long-term partner for sophisticated and maintainable software
Wavect - Your long-term partner for sophisticated and maintainable software
Kevin Riedl
 
Get the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - OverviewGet the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - Overview
ForgeRock
 
Fuse overview
Fuse overviewFuse overview
Fuse overview
Rob Davies
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
David Berliner
 
Clean code is not the goal - working software is
Clean code is not the goal - working software isClean code is not the goal - working software is
Clean code is not the goal - working software isEdorian
 
Kubernetes buildpacks - from a source code to the running OCI container with ...
Kubernetes buildpacks - from a source code to the running OCI container with ...Kubernetes buildpacks - from a source code to the running OCI container with ...
Kubernetes buildpacks - from a source code to the running OCI container with ...
PROIDEA
 
Code is Creative by Patrick Malatack, VP Product, Twilio
Code is Creative by Patrick Malatack, VP Product, TwilioCode is Creative by Patrick Malatack, VP Product, Twilio
Code is Creative by Patrick Malatack, VP Product, Twilio
Traction Conf
 
Get connected with Azure Logic Apps & Flow
Get connected with Azure Logic Apps & FlowGet connected with Azure Logic Apps & Flow

Similar to Mikado and the Art of Refactoring (JFall 2019) (20)

Dataiku meetup 12 july 2018 Amsterdam
Dataiku meetup 12 july 2018 AmsterdamDataiku meetup 12 july 2018 Amsterdam
Dataiku meetup 12 july 2018 Amsterdam
 
Writing Code for Humans, not Computers
Writing Code for Humans, not ComputersWriting Code for Humans, not Computers
Writing Code for Humans, not Computers
 
Importing Code and Existing Containers to OpenShift - Minneapolis Docker Meet...
Importing Code and Existing Containers to OpenShift - Minneapolis Docker Meet...Importing Code and Existing Containers to OpenShift - Minneapolis Docker Meet...
Importing Code and Existing Containers to OpenShift - Minneapolis Docker Meet...
 
resume
resumeresume
resume
 
Simple REST-APIs with Dropwizard and Swagger
Simple REST-APIs with Dropwizard and SwaggerSimple REST-APIs with Dropwizard and Swagger
Simple REST-APIs with Dropwizard and Swagger
 
Studio 5000® Application Code Manager: Introduction and Demonstration
Studio 5000® Application Code Manager: Introduction and DemonstrationStudio 5000® Application Code Manager: Introduction and Demonstration
Studio 5000® Application Code Manager: Introduction and Demonstration
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
 
Html5 viewer HTML5 office kukudocs
Html5 viewer HTML5 office kukudocsHtml5 viewer HTML5 office kukudocs
Html5 viewer HTML5 office kukudocs
 
Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...
Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...
Dan Persa, Maximilian Fellner - The recipe for scalable frontends - Codemotio...
 
How InfluxDB Enables NodeSource to Run Extreme Levels of Node.js Processes
How InfluxDB Enables NodeSource to Run Extreme Levels of Node.js ProcessesHow InfluxDB Enables NodeSource to Run Extreme Levels of Node.js Processes
How InfluxDB Enables NodeSource to Run Extreme Levels of Node.js Processes
 
Keedio Stack: BDaaS deployment for dummies by Alessio Comisso at Big Data Spa...
Keedio Stack: BDaaS deployment for dummies by Alessio Comisso at Big Data Spa...Keedio Stack: BDaaS deployment for dummies by Alessio Comisso at Big Data Spa...
Keedio Stack: BDaaS deployment for dummies by Alessio Comisso at Big Data Spa...
 
Wavect - Your long-term partner for sophisticated and maintainable software
Wavect - Your long-term partner for sophisticated and maintainable softwareWavect - Your long-term partner for sophisticated and maintainable software
Wavect - Your long-term partner for sophisticated and maintainable software
 
Get the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - OverviewGet the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - Overview
 
Fuse overview
Fuse overviewFuse overview
Fuse overview
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
 
ChetanResume
ChetanResumeChetanResume
ChetanResume
 
Clean code is not the goal - working software is
Clean code is not the goal - working software isClean code is not the goal - working software is
Clean code is not the goal - working software is
 
Kubernetes buildpacks - from a source code to the running OCI container with ...
Kubernetes buildpacks - from a source code to the running OCI container with ...Kubernetes buildpacks - from a source code to the running OCI container with ...
Kubernetes buildpacks - from a source code to the running OCI container with ...
 
Code is Creative by Patrick Malatack, VP Product, Twilio
Code is Creative by Patrick Malatack, VP Product, TwilioCode is Creative by Patrick Malatack, VP Product, Twilio
Code is Creative by Patrick Malatack, VP Product, Twilio
 
Get connected with Azure Logic Apps & Flow
Get connected with Azure Logic Apps & FlowGet connected with Azure Logic Apps & Flow
Get connected with Azure Logic Apps & Flow
 

Recently uploaded

How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
MayankTawar1
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
XfilesPro
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 

Recently uploaded (20)

How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 

Mikado and the Art of Refactoring (JFall 2019)