Refactoring out of the mess

Refactoring your way
out of the mess
@WolframKriesing, uxebu - JavaScript company
Improve structure all the time
was not possible with this tower, of course
Refactoring out of the mess
Refactoring out of the mess
Refactoring out of the mess
A bit of history
Refactoring out of the mess
Design is hard.
The design of
reusable software
is especially hard.
Reusable software usually is the
result of many design iterations.
William F. Opdyke, 1992
it’sallaboutdesign
Refactoring out of the mess
Refactoring out of the mess
http://martinfowler.com/books/refactoring.html
base
controlled technique
code
improving design
applying
series small
tranformations too small to be worth doing
tranformations
cumulative
significant
error
small steps
reduce risk
avoid
system
broken
carrying out
restructuring
allows
gradually refactor
system
extended period of time
Refactoring out of the mess
Reasons to refactor
(refactoring workflows)
http://martinfowler.com/articles/workflowsOfRefactoring/
Refactoring out of the mess
# 1
Refactoring out of the mess
#2 - Litter-Pickup
#3comprehensionrefactoring
prepare
#4
#5
Refactoring out of the mess
#6 Long-Term
Refactoring
• Design
• Gradually get to a new design
• Little jumps
• Parallel refactoring
„If somebody talks about a system being
broken for a couple of days while they
are refactoring, you can be pretty sure
they are not refactoring.“
http://martinfowler.com/bliki/RefactoringMalapropism.html
1 TDD Refactoring
2 Litter-Pickup Refactoring
3 Comprehension Refactoring
4 Preparatory Refactoring
5 Planned Refactoring
6 Long-Term Refactoring
–Martin Fowler
„Refactoring (noun):
a change made to the
internal structure of
software to make it easier to
understand and cheaper to
modify without changing its
observable behavior.“
Why?
How?
What?
Write Code
Read Code
Easier to understand?
- less to read!
- expressive
The Power Of (Long) Names
Let’s use our time more efficiently!
How?
How?
„If you are doing refactoring
your system should
not be broken for more than
a few minutes at a time“
http://martinfowler.com/bliki/RefactoringMalapropism.html
broken?
requires tests
–Martin Fowler
„Refactoring (noun):
a change made to the
internal structure of
software to make it easier to
understand and cheaper to
modify without changing its
observable behavior.“
stay green
Refactoring out of the mess
Refactoring out of the mess
stay green
reflected in tests
Tests?
LEGACY
Tests?
Refactoring out of the mess
http://www.merriam-webster.com/dictionary/observable
observable
behavior
implementation detail
test this
DONT test this
implementation detail
test right!
OR disable refactoring
Tests?
„If you are doing refactoring
your system should
not be broken for more than
a few minutes at a time“
http://martinfowler.com/bliki/RefactoringMalapropism.html
Refactoring out of the mess
baby stepping on green
baby steps
stay green
have the right tests
don’t test
implementation detail
Why refactor?
think in economics
not in code ethics
http://martinfowler.com/bliki/DesignStaminaHypothesis.html
What to refactor
https://github.com/
emilybache/
Tennis-Refactoring-Kata
Refactoring out of the mess
Refactoring out of the mess
Refactoring out of the mess
Refactoring out of the mess
thx
@WolframKriesing, uxebu - JavaScript company
1 von 64

Recomendados

Continuous Integration von
Continuous IntegrationContinuous Integration
Continuous Integrationelliando dias
441 views19 Folien
The Hard Problems of Continuous Deployment von
The Hard Problems of Continuous DeploymentThe Hard Problems of Continuous Deployment
The Hard Problems of Continuous DeploymentTimothy Fitz
3.6K views36 Folien
Continuous integration von
Continuous integrationContinuous integration
Continuous integrationDennis van der Stelt
871 views44 Folien
TDD von
TDDTDD
TDDHein Htut Aung
9 views5 Folien
BizTalk ALM (Toon Vanhoutte @ Integration Monday) von
BizTalk ALM (Toon Vanhoutte @ Integration Monday)BizTalk ALM (Toon Vanhoutte @ Integration Monday)
BizTalk ALM (Toon Vanhoutte @ Integration Monday)Codit
851 views25 Folien
Source Control Concepts von
Source Control ConceptsSource Control Concepts
Source Control ConceptsChristopher Bennage
1.6K views17 Folien

Más contenido relacionado

Was ist angesagt?

Selenium and Continuous Intergration von
Selenium and Continuous IntergrationSelenium and Continuous Intergration
Selenium and Continuous Intergrationautomated-testing.info
303 views20 Folien
Distributed Development von
Distributed DevelopmentDistributed Development
Distributed DevelopmentDmitri Nesteruk
525 views30 Folien
Source control - what you need to know von
Source control - what you need to knowSource control - what you need to know
Source control - what you need to knowdaveymni
1.1K views18 Folien
Advanced CCPM concepts for IT Program Management von
Advanced CCPM concepts for IT Program ManagementAdvanced CCPM concepts for IT Program Management
Advanced CCPM concepts for IT Program ManagementYossi Bonomo
998 views9 Folien
CI/CD and automated Test von
CI/CD and automated TestCI/CD and automated Test
CI/CD and automated TestJoe Phan
22 views17 Folien
Using Continuous Integration To Ensure Project Health New von
Using Continuous Integration To Ensure Project Health NewUsing Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health Newbartlowe
662 views13 Folien

Was ist angesagt?(18)

Source control - what you need to know von daveymni
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
daveymni1.1K views
Advanced CCPM concepts for IT Program Management von Yossi Bonomo
Advanced CCPM concepts for IT Program ManagementAdvanced CCPM concepts for IT Program Management
Advanced CCPM concepts for IT Program Management
Yossi Bonomo998 views
CI/CD and automated Test von Joe Phan
CI/CD and automated TestCI/CD and automated Test
CI/CD and automated Test
Joe Phan22 views
Using Continuous Integration To Ensure Project Health New von bartlowe
Using Continuous Integration To Ensure Project Health NewUsing Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health New
bartlowe662 views
Continuous Integration and Delivery von Brandon Cornett
Continuous Integration and DeliveryContinuous Integration and Delivery
Continuous Integration and Delivery
Brandon Cornett393 views
7 things you should know before going serverless von Erez Berkner
7 things you should know before going serverless7 things you should know before going serverless
7 things you should know before going serverless
Erez Berkner184 views
Production Ready WordPress - WC Utrecht 2017 von Edmund Turbin
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017
Edmund Turbin1.3K views
Continuous Integration and Builds von Bhavin Javia
Continuous Integration and BuildsContinuous Integration and Builds
Continuous Integration and Builds
Bhavin Javia2.2K views
Octopus Deploy Tech Fest 2014 von adriantwright
Octopus Deploy Tech Fest 2014Octopus Deploy Tech Fest 2014
Octopus Deploy Tech Fest 2014
adriantwright1K views
Put "fast" back in "fast feedback" von Lars Thorup
Put "fast" back in "fast feedback"Put "fast" back in "fast feedback"
Put "fast" back in "fast feedback"
Lars Thorup782 views
Everything you ever wanted to know about deployment but were afraid to ask von lauraxthomson
Everything you ever wanted to know about deployment but were afraid to askEverything you ever wanted to know about deployment but were afraid to ask
Everything you ever wanted to know about deployment but were afraid to ask
lauraxthomson947 views
Deployment taken seriously with Octopus Deploy and TeamCity von Tomas Jansson
Deployment taken seriously with Octopus Deploy and TeamCityDeployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCity
Tomas Jansson3K views

Destacado

Our react-native experiences at crewmeister von
Our react-native experiences at crewmeisterOur react-native experiences at crewmeister
Our react-native experiences at crewmeisterwolframkriesing
680 views54 Folien
ES6Katas.org - an introduction and the story behind von
ES6Katas.org - an introduction and the story behindES6Katas.org - an introduction and the story behind
ES6Katas.org - an introduction and the story behindwolframkriesing
2K views44 Folien
завуч и директор von
завуч и директорзавуч и директор
завуч и директорOlga Gorbenko
3.4K views21 Folien
Presentationfor lnl von
Presentationfor lnlPresentationfor lnl
Presentationfor lnlWebFX
745 views47 Folien
Frontend Engineer Toolbox von
Frontend Engineer ToolboxFrontend Engineer Toolbox
Frontend Engineer ToolboxYnon Perek
3.3K views81 Folien
САЙТ ГИМНАЗИИ von
САЙТ ГИМНАЗИИ САЙТ ГИМНАЗИИ
САЙТ ГИМНАЗИИ Olga Gorbenko
4.8K views14 Folien

Destacado(10)

Our react-native experiences at crewmeister von wolframkriesing
Our react-native experiences at crewmeisterOur react-native experiences at crewmeister
Our react-native experiences at crewmeister
wolframkriesing680 views
ES6Katas.org - an introduction and the story behind von wolframkriesing
ES6Katas.org - an introduction and the story behindES6Katas.org - an introduction and the story behind
ES6Katas.org - an introduction and the story behind
wolframkriesing2K views
завуч и директор von Olga Gorbenko
завуч и директорзавуч и директор
завуч и директор
Olga Gorbenko3.4K views
Presentationfor lnl von WebFX
Presentationfor lnlPresentationfor lnl
Presentationfor lnl
WebFX745 views
Frontend Engineer Toolbox von Ynon Perek
Frontend Engineer ToolboxFrontend Engineer Toolbox
Frontend Engineer Toolbox
Ynon Perek3.3K views
САЙТ ГИМНАЗИИ von Olga Gorbenko
САЙТ ГИМНАЗИИ САЙТ ГИМНАЗИИ
САЙТ ГИМНАЗИИ
Olga Gorbenko4.8K views
Kontseptsiya nova shkola von Olga Gorbenko
Kontseptsiya nova shkolaKontseptsiya nova shkola
Kontseptsiya nova shkola
Olga Gorbenko3.7K views
Mobile HTML, CSS, and JavaScript von franksvalli
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScript
franksvalli104K views
02 JavaScript Syntax von Ynon Perek
02 JavaScript Syntax02 JavaScript Syntax
02 JavaScript Syntax
Ynon Perek3.9K views
Understanding & Designing for the Mobile Web von WebFX
Understanding & Designing for the Mobile WebUnderstanding & Designing for the Mobile Web
Understanding & Designing for the Mobile Web
WebFX88.9K views

Similar a Refactoring out of the mess

Day2 - Refactoring (Lecture SS 2015) von
Day2 - Refactoring (Lecture SS 2015)Day2 - Refactoring (Lecture SS 2015)
Day2 - Refactoring (Lecture SS 2015)wolframkriesing
574 views58 Folien
A Scalable Software Build Accelerator von
A Scalable Software Build AcceleratorA Scalable Software Build Accelerator
A Scalable Software Build AcceleratorEngineering Software Lab
587 views20 Folien
Agile von
AgileAgile
AgileKomal2525
303 views63 Folien
DevOps explained von
DevOps explainedDevOps explained
DevOps explainedJérôme Kehrli
10.6K views46 Folien
The Power Of Refactoring (php|tek 09) von
The Power Of Refactoring (php|tek 09)The Power Of Refactoring (php|tek 09)
The Power Of Refactoring (php|tek 09)Stefan Koopmanschap
1.5K views40 Folien
10 Reasons You MUST Consider Pattern-Aware Programming von
10 Reasons You MUST Consider Pattern-Aware Programming10 Reasons You MUST Consider Pattern-Aware Programming
10 Reasons You MUST Consider Pattern-Aware ProgrammingPostSharp Technologies
344 views37 Folien

Similar a Refactoring out of the mess(20)

Day2 - Refactoring (Lecture SS 2015) von wolframkriesing
Day2 - Refactoring (Lecture SS 2015)Day2 - Refactoring (Lecture SS 2015)
Day2 - Refactoring (Lecture SS 2015)
wolframkriesing574 views
Comment améliorer le quotidien des Développeurs PHP ? von AFUP_Limoges
Comment améliorer le quotidien des Développeurs PHP ?Comment améliorer le quotidien des Développeurs PHP ?
Comment améliorer le quotidien des Développeurs PHP ?
AFUP_Limoges2.1K views
Adventures in docker compose von LinkMe Srl
Adventures in docker composeAdventures in docker compose
Adventures in docker compose
LinkMe Srl1.5K views
Cloud Native Dünyada CI/CD von Mustafa AKIN
Cloud Native Dünyada CI/CDCloud Native Dünyada CI/CD
Cloud Native Dünyada CI/CD
Mustafa AKIN354 views
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche... von Richard Bullington-McGuire
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Refactoring, 2nd Edition von jexp
Refactoring, 2nd EditionRefactoring, 2nd Edition
Refactoring, 2nd Edition
jexp2.4K views
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times von DevOps.com
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build TimesUsing Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
Using Multi-stage Docker, Go, Java,& Bazel to DESTROY Long Build Times
DevOps.com907 views

Más de wolframkriesing

JavaScript The Language Meetup - Async functions von
JavaScript The Language Meetup - Async functionsJavaScript The Language Meetup - Async functions
JavaScript The Language Meetup - Async functionswolframkriesing
446 views11 Folien
ES6 katas - talk given at enterjs von
ES6 katas - talk given at enterjsES6 katas - talk given at enterjs
ES6 katas - talk given at enterjswolframkriesing
730 views62 Folien
TDD for Kids - VLCjs (Valencia Spain, July 2015) von
TDD for Kids - VLCjs (Valencia Spain, July 2015)TDD for Kids - VLCjs (Valencia Spain, July 2015)
TDD for Kids - VLCjs (Valencia Spain, July 2015)wolframkriesing
1.1K views81 Folien
TDD with Google Spreadsheets #enterjs 2015 von
TDD with Google Spreadsheets #enterjs 2015TDD with Google Spreadsheets #enterjs 2015
TDD with Google Spreadsheets #enterjs 2015wolframkriesing
1.1K views81 Folien
Baby steps von
Baby stepsBaby steps
Baby stepswolframkriesing
1.4K views38 Folien
TDD with Google Spreadsheets von
TDD with Google SpreadsheetsTDD with Google Spreadsheets
TDD with Google Spreadsheetswolframkriesing
772 views68 Folien

Más de wolframkriesing(20)

JavaScript The Language Meetup - Async functions von wolframkriesing
JavaScript The Language Meetup - Async functionsJavaScript The Language Meetup - Async functions
JavaScript The Language Meetup - Async functions
wolframkriesing446 views
TDD for Kids - VLCjs (Valencia Spain, July 2015) von wolframkriesing
TDD for Kids - VLCjs (Valencia Spain, July 2015)TDD for Kids - VLCjs (Valencia Spain, July 2015)
TDD for Kids - VLCjs (Valencia Spain, July 2015)
wolframkriesing1.1K views
TDD with Google Spreadsheets #enterjs 2015 von wolframkriesing
TDD with Google Spreadsheets #enterjs 2015TDD with Google Spreadsheets #enterjs 2015
TDD with Google Spreadsheets #enterjs 2015
wolframkriesing1.1K views
Pixelplant - WebDev Meetup Salzburg von wolframkriesing
Pixelplant - WebDev Meetup SalzburgPixelplant - WebDev Meetup Salzburg
Pixelplant - WebDev Meetup Salzburg
wolframkriesing850 views
Presentation Mobile Monday Munich, March 2012 von wolframkriesing
Presentation Mobile Monday Munich, March 2012Presentation Mobile Monday Munich, March 2012
Presentation Mobile Monday Munich, March 2012
wolframkriesing519 views
JavaScript Tools (PHPConference 2011, Berlin) von wolframkriesing
JavaScript Tools (PHPConference 2011, Berlin)JavaScript Tools (PHPConference 2011, Berlin)
JavaScript Tools (PHPConference 2011, Berlin)
wolframkriesing1.1K views
NEXT11, Puzzle pieces of our mobile web approach von wolframkriesing
NEXT11, Puzzle pieces of our mobile web approachNEXT11, Puzzle pieces of our mobile web approach
NEXT11, Puzzle pieces of our mobile web approach
wolframkriesing564 views

Último

Empathic Computing: Delivering the Potential of the Metaverse von
Empathic Computing: Delivering  the Potential of the MetaverseEmpathic Computing: Delivering  the Potential of the Metaverse
Empathic Computing: Delivering the Potential of the MetaverseMark Billinghurst
478 views80 Folien
SUPPLIER SOURCING.pptx von
SUPPLIER SOURCING.pptxSUPPLIER SOURCING.pptx
SUPPLIER SOURCING.pptxangelicacueva6
15 views1 Folie
Future of Indian ConsumerTech von
Future of Indian ConsumerTechFuture of Indian ConsumerTech
Future of Indian ConsumerTechKapil Khandelwal (KK)
21 views68 Folien
Evolving the Network Automation Journey from Python to Platforms von
Evolving the Network Automation Journey from Python to PlatformsEvolving the Network Automation Journey from Python to Platforms
Evolving the Network Automation Journey from Python to PlatformsNetwork Automation Forum
13 views21 Folien
Vertical User Stories von
Vertical User StoriesVertical User Stories
Vertical User StoriesMoisés Armani Ramírez
14 views16 Folien
Attacking IoT Devices from a Web Perspective - Linux Day von
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day Simone Onofri
16 views68 Folien

Último(20)

Empathic Computing: Delivering the Potential of the Metaverse von Mark Billinghurst
Empathic Computing: Delivering  the Potential of the MetaverseEmpathic Computing: Delivering  the Potential of the Metaverse
Empathic Computing: Delivering the Potential of the Metaverse
Mark Billinghurst478 views
Attacking IoT Devices from a Web Perspective - Linux Day von Simone Onofri
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day
Simone Onofri16 views
Voice Logger - Telephony Integration Solution at Aegis von Nirmal Sharma
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at Aegis
Nirmal Sharma39 views
Case Study Copenhagen Energy and Business Central.pdf von Aitana
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdf
Aitana16 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive von Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Piloting & Scaling Successfully With Microsoft Viva von Richard Harbridge
Piloting & Scaling Successfully With Microsoft VivaPiloting & Scaling Successfully With Microsoft Viva
Piloting & Scaling Successfully With Microsoft Viva
Unit 1_Lecture 2_Physical Design of IoT.pdf von StephenTec
Unit 1_Lecture 2_Physical Design of IoT.pdfUnit 1_Lecture 2_Physical Design of IoT.pdf
Unit 1_Lecture 2_Physical Design of IoT.pdf
StephenTec12 views
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors von sugiuralab
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors
sugiuralab19 views

Refactoring out of the mess