SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
Working effectively
 with legacy code
              ­ chapter 1 ­

      2010.12.23
   geek—cafe, koduki
What is legacy code ?
not object oriented ?
NO
not beautiful ?
NO
nothing test ?
YES
If tests are written,
an awful code is refactable.

However, even a wonderful code
 is difficult change if there is no test.
1. Changing Software.
Four reasons to change software

  1.Adding a feature
  2.Fixing a bug
  3.Refactoring
  4.Optimizing
Change reason and type

               Adding a feature   Fixing a bug   Refactoring   Optimizing
Structure         change            change        change
New Function      change
Function                            change
Resource                                                        change
Test Code         change            Change
Points to change
●   What should I change?
●   How can I confirm the change is correct?
●   How can I confirm anything is not broken?
These are very difficult.
So we fear the change.
Risks by not changing
●   the code becomes complex.
●   skill down for changing software.
●   fear of changing grows more and more.
To Be Continued 
   Chapter 2.

Contenu connexe

Tendances

Zen And the Art of Test Maintenance Presentation
Zen And the Art of Test Maintenance PresentationZen And the Art of Test Maintenance Presentation
Zen And the Art of Test Maintenance PresentationGil Zilberfeld
 
A Test Manifesto 2014.03.26
A Test Manifesto 2014.03.26A Test Manifesto 2014.03.26
A Test Manifesto 2014.03.26Julio Ramirez
 
2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming liveJohannes Brodwall
 
Why TDD is Important for Everyone
Why TDD is Important for EveryoneWhy TDD is Important for Everyone
Why TDD is Important for EveryoneGil Zilberfeld
 
Dirty tests and How To Clean Them
Dirty tests and How To Clean ThemDirty tests and How To Clean Them
Dirty tests and How To Clean ThemGil Zilberfeld
 
Beter code for better tests
Beter code for better testsBeter code for better tests
Beter code for better testsGil Zilberfeld
 
Zen and the art of Test Maintenance - #TestIL Meetup Tel Aviv
Zen and the art of Test Maintenance - #TestIL Meetup Tel AvivZen and the art of Test Maintenance - #TestIL Meetup Tel Aviv
Zen and the art of Test Maintenance - #TestIL Meetup Tel AvivGil Zilberfeld
 
Decide on technology stack & data architecture
Decide on technology stack & data architectureDecide on technology stack & data architecture
Decide on technology stack & data architectureSV.CO
 
UI5CN Live Webinar on FAQ and Q&A for AngularJS, NodeJS and MongoDB
UI5CN Live Webinar on FAQ and Q&A for AngularJS, NodeJS and MongoDBUI5CN Live Webinar on FAQ and Q&A for AngularJS, NodeJS and MongoDB
UI5CN Live Webinar on FAQ and Q&A for AngularJS, NodeJS and MongoDBAJAY NAYAK
 
BDD in Action - Automated Web Testing with WebDriver and Serenity
BDD in Action - Automated Web Testing with WebDriver and SerenityBDD in Action - Automated Web Testing with WebDriver and Serenity
BDD in Action - Automated Web Testing with WebDriver and SerenityJohn Ferguson Smart Limited
 
Test Driven Development Powered by LEGO
Test Driven Development Powered by LEGOTest Driven Development Powered by LEGO
Test Driven Development Powered by LEGOAgile Montréal
 
Practiced agile developer with tdd & bdd
Practiced agile developer with tdd & bdd Practiced agile developer with tdd & bdd
Practiced agile developer with tdd & bdd Sakares Saengkaew
 
Creating A Unit Testing Strategy
Creating A Unit Testing StrategyCreating A Unit Testing Strategy
Creating A Unit Testing StrategyGil Zilberfeld
 
TDD for the rest of us
TDD for the rest of usTDD for the rest of us
TDD for the rest of usGil Zilberfeld
 
TDD for the rest of us...
TDD for the rest of us...TDD for the rest of us...
TDD for the rest of us...Gil Zilberfeld
 
Software Craftsmanship @ Ntnu
Software Craftsmanship @ NtnuSoftware Craftsmanship @ Ntnu
Software Craftsmanship @ Ntnugoeran
 

Tendances (18)

Zen And the Art of Test Maintenance Presentation
Zen And the Art of Test Maintenance PresentationZen And the Art of Test Maintenance Presentation
Zen And the Art of Test Maintenance Presentation
 
A Test Manifesto 2014.03.26
A Test Manifesto 2014.03.26A Test Manifesto 2014.03.26
A Test Manifesto 2014.03.26
 
2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live
 
Why TDD is Important for Everyone
Why TDD is Important for EveryoneWhy TDD is Important for Everyone
Why TDD is Important for Everyone
 
Is Agile Better
Is Agile BetterIs Agile Better
Is Agile Better
 
Dirty tests and How To Clean Them
Dirty tests and How To Clean ThemDirty tests and How To Clean Them
Dirty tests and How To Clean Them
 
Beter code for better tests
Beter code for better testsBeter code for better tests
Beter code for better tests
 
Zen and the art of Test Maintenance - #TestIL Meetup Tel Aviv
Zen and the art of Test Maintenance - #TestIL Meetup Tel AvivZen and the art of Test Maintenance - #TestIL Meetup Tel Aviv
Zen and the art of Test Maintenance - #TestIL Meetup Tel Aviv
 
Decide on technology stack & data architecture
Decide on technology stack & data architectureDecide on technology stack & data architecture
Decide on technology stack & data architecture
 
UI5CN Live Webinar on FAQ and Q&A for AngularJS, NodeJS and MongoDB
UI5CN Live Webinar on FAQ and Q&A for AngularJS, NodeJS and MongoDBUI5CN Live Webinar on FAQ and Q&A for AngularJS, NodeJS and MongoDB
UI5CN Live Webinar on FAQ and Q&A for AngularJS, NodeJS and MongoDB
 
BDD in Action - Automated Web Testing with WebDriver and Serenity
BDD in Action - Automated Web Testing with WebDriver and SerenityBDD in Action - Automated Web Testing with WebDriver and Serenity
BDD in Action - Automated Web Testing with WebDriver and Serenity
 
Test Driven Development Powered by LEGO
Test Driven Development Powered by LEGOTest Driven Development Powered by LEGO
Test Driven Development Powered by LEGO
 
Practiced agile developer with tdd & bdd
Practiced agile developer with tdd & bdd Practiced agile developer with tdd & bdd
Practiced agile developer with tdd & bdd
 
The Heart Of Agile
The Heart Of AgileThe Heart Of Agile
The Heart Of Agile
 
Creating A Unit Testing Strategy
Creating A Unit Testing StrategyCreating A Unit Testing Strategy
Creating A Unit Testing Strategy
 
TDD for the rest of us
TDD for the rest of usTDD for the rest of us
TDD for the rest of us
 
TDD for the rest of us...
TDD for the rest of us...TDD for the rest of us...
TDD for the rest of us...
 
Software Craftsmanship @ Ntnu
Software Craftsmanship @ NtnuSoftware Craftsmanship @ Ntnu
Software Craftsmanship @ Ntnu
 

En vedette

Rubykaigi09 Webでるりまを検索するn個の方法
Rubykaigi09 Webでるりまを検索するn個の方法Rubykaigi09 Webでるりまを検索するn個の方法
Rubykaigi09 Webでるりまを検索するn個の方法Hiroaki NAKADA
 
光のツールExcelに闇Rubyの力を注いでみた
光のツールExcelに闇Rubyの力を注いでみた光のツールExcelに闇Rubyの力を注いでみた
光のツールExcelに闇Rubyの力を注いでみたHiroaki NAKADA
 
Rakuten New MySQL Backup System With Xtrabackup
Rakuten New MySQL Backup System With XtrabackupRakuten New MySQL Backup System With Xtrabackup
Rakuten New MySQL Backup System With XtrabackupRakuten Group, Inc.
 
How to make keynote like presentation with markdown
How to make keynote like presentation with markdownHow to make keynote like presentation with markdown
How to make keynote like presentation with markdownHiroaki NAKADA
 
Conjuntos-Unión-Intersección
Conjuntos-Unión-IntersecciónConjuntos-Unión-Intersección
Conjuntos-Unión-IntersecciónA01004512
 

En vedette (8)

Legacycode01
Legacycode01Legacycode01
Legacycode01
 
Rubykaigi09 Webでるりまを検索するn個の方法
Rubykaigi09 Webでるりまを検索するn個の方法Rubykaigi09 Webでるりまを検索するn個の方法
Rubykaigi09 Webでるりまを検索するn個の方法
 
From document-to-code
From document-to-codeFrom document-to-code
From document-to-code
 
光のツールExcelに闇Rubyの力を注いでみた
光のツールExcelに闇Rubyの力を注いでみた光のツールExcelに闇Rubyの力を注いでみた
光のツールExcelに闇Rubyの力を注いでみた
 
Rakuten New MySQL Backup System With Xtrabackup
Rakuten New MySQL Backup System With XtrabackupRakuten New MySQL Backup System With Xtrabackup
Rakuten New MySQL Backup System With Xtrabackup
 
How to make keynote like presentation with markdown
How to make keynote like presentation with markdownHow to make keynote like presentation with markdown
How to make keynote like presentation with markdown
 
Conjuntos-Unión-Intersección
Conjuntos-Unión-IntersecciónConjuntos-Unión-Intersección
Conjuntos-Unión-Intersección
 
Maven基礎
Maven基礎Maven基礎
Maven基礎
 

Similaire à Working effectively with legacy code chapter1

Working effectively with legacy codes
Working effectively with legacy codesWorking effectively with legacy codes
Working effectively with legacy codesAli Shariat
 
Should you be your own judge?
Should you be your own judge?Should you be your own judge?
Should you be your own judge?Achyut Pokhrel
 
Working Effectively with Legacy Code: Lessons in Practice
Working Effectively with Legacy Code: Lessons in PracticeWorking Effectively with Legacy Code: Lessons in Practice
Working Effectively with Legacy Code: Lessons in PracticeAmar Shah
 
Test-Driven Development Reference Card
Test-Driven Development Reference CardTest-Driven Development Reference Card
Test-Driven Development Reference CardSeapine Software
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Designguest446c0
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad DesignJames Peckham
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit testTung Nguyen Thanh
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]Agile đây Vietnam
 
{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptxAmalEldhose2
 
Copilot to Cover: Why AI can't replace developers with robots, but can make l...
Copilot to Cover: Why AI can't replace developers with robots, but can make l...Copilot to Cover: Why AI can't replace developers with robots, but can make l...
Copilot to Cover: Why AI can't replace developers with robots, but can make l...Andy Piper
 
How to Adopt Agile at Your Organization
How to Adopt Agile at Your OrganizationHow to Adopt Agile at Your Organization
How to Adopt Agile at Your OrganizationRaimonds Simanovskis
 
What is Unit Testing
What is Unit TestingWhat is Unit Testing
What is Unit TestingSadaaki Emura
 
You cant be agile if your code sucks
You cant be agile if your code sucksYou cant be agile if your code sucks
You cant be agile if your code sucksPeter Gfader
 
Tester developer interaction
Tester developer interactionTester developer interaction
Tester developer interactiongaoliang641
 
Helping Programmers Write Better Tests
Helping Programmers Write Better TestsHelping Programmers Write Better Tests
Helping Programmers Write Better TestsGeoffrey Dunn
 
How to quickly add a safety net to a legacy codebase
How to quickly add a safety net to a legacy codebaseHow to quickly add a safety net to a legacy codebase
How to quickly add a safety net to a legacy codebaseNelis Boucké
 
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...DicodingEvent
 
Tetap Agile dengan Arsitektur Monolith - Ziya El Arief
Tetap Agile dengan Arsitektur Monolith - Ziya El AriefTetap Agile dengan Arsitektur Monolith - Ziya El Arief
Tetap Agile dengan Arsitektur Monolith - Ziya El AriefDicodingEvent
 

Similaire à Working effectively with legacy code chapter1 (20)

Working effectively with legacy codes
Working effectively with legacy codesWorking effectively with legacy codes
Working effectively with legacy codes
 
Should you be your own judge?
Should you be your own judge?Should you be your own judge?
Should you be your own judge?
 
Working Effectively with Legacy Code: Lessons in Practice
Working Effectively with Legacy Code: Lessons in PracticeWorking Effectively with Legacy Code: Lessons in Practice
Working Effectively with Legacy Code: Lessons in Practice
 
Test-Driven Development Reference Card
Test-Driven Development Reference CardTest-Driven Development Reference Card
Test-Driven Development Reference Card
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Design
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Design
 
Working Effectively with Legacy Code
Working Effectively with Legacy CodeWorking Effectively with Legacy Code
Working Effectively with Legacy Code
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit test
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
 
{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx{10.0} Test Driven Development.pptx
{10.0} Test Driven Development.pptx
 
Copilot to Cover: Why AI can't replace developers with robots, but can make l...
Copilot to Cover: Why AI can't replace developers with robots, but can make l...Copilot to Cover: Why AI can't replace developers with robots, but can make l...
Copilot to Cover: Why AI can't replace developers with robots, but can make l...
 
How to Adopt Agile at Your Organization
How to Adopt Agile at Your OrganizationHow to Adopt Agile at Your Organization
How to Adopt Agile at Your Organization
 
What is Unit Testing
What is Unit TestingWhat is Unit Testing
What is Unit Testing
 
You cant be agile if your code sucks
You cant be agile if your code sucksYou cant be agile if your code sucks
You cant be agile if your code sucks
 
Tester developer interaction
Tester developer interactionTester developer interaction
Tester developer interaction
 
Helping Programmers Write Better Tests
Helping Programmers Write Better TestsHelping Programmers Write Better Tests
Helping Programmers Write Better Tests
 
Peer Review Guidelines
Peer Review GuidelinesPeer Review Guidelines
Peer Review Guidelines
 
How to quickly add a safety net to a legacy codebase
How to quickly add a safety net to a legacy codebaseHow to quickly add a safety net to a legacy codebase
How to quickly add a safety net to a legacy codebase
 
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...
Meningkatkan SOC dan Reusabillity Kode dengan Duo DI - Sidiq Permana (CIO Nus...
 
Tetap Agile dengan Arsitektur Monolith - Ziya El Arief
Tetap Agile dengan Arsitektur Monolith - Ziya El AriefTetap Agile dengan Arsitektur Monolith - Ziya El Arief
Tetap Agile dengan Arsitektur Monolith - Ziya El Arief
 

Working effectively with legacy code chapter1