SlideShare a Scribd company logo
1 of 10
Refactoring
By Rabeya Bashri
Refactoring
What is Refactoring
Why should we use Refactoring
When should we use Refactoring
When should not we use Refactoring
Why Refactoring works
Problem with Refactoring
Some Scenario
Conclusion
What is Refactoring
 a disciplined technique, used for restructuring an existing body of code
 altering its internal structure without changing its external behavior
 Its heart is a series of small behavior preserving transformations. Each
transformation does little, but a sequence of transformations can produce a
significant restructuring.
 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.
 Refactor (verb): to restructure software by applying a series of refactorings
without changing its observable behavior.
 it provides a technique for cleaning up code in a more efficient and
controlled manner.
Why should we use Refactoring
 Refactoring Improves the Design of Software
 It becomes harder to see the design by reading the code.
 Regular refactoring helps code retain its shape.
 Poorly designed code usually takes more code to do the same things, often
because the code quite literally does the same thing in several places. Thus an
important aspect of improving design is to eliminate duplicate code.
 By eliminating the duplicates, you ensure that the code says everything once
and only once, which is the essence of good design.
 Refactoring Makes Software Easier to Understand
 It does matter if it takes a programmer a week to make a change that would
have taken only an hour if programmer had understood your code.
 Refactoring Helps You Find Bugs
 Refactoring helps programmer be much more effective at writing robust code.
 Refactoring Helps You Program Faster
 a good design is essential for rapid software development.
 Without a good design, you can progress quickly for a while, but soon the poor
design starts to slow you down. You spend time finding and fixing bugs instead
of adding new function. Changes take longer as you try to understand the
system and find the duplicate code.
When should we use Refactoring
 refactoring is not an activity you set aside time to do. Refactoring is
something you do all the time in little bursts. You don’t decide to
refactor, you refactor because you want to do something else, and
refactoring helps you do that other thing.
 The Rule of Three
 Refactor When You Add Function
 Refactor When You Need to Fix a Bug
 Refactor As You Do a Code Review
When should not we use Refactoring
 A clear sign of the need to rewrite is when the current code
just does not work. You may discover this only by trying to
test it and discovering that the code is so full of bugs that you
cannot stablilize it. Remember, code has to work mostly
correctly before you refactor.
 The other time you should avoid refactoring is when you are
close to a deadline. At that point the productivity gain from
refactoring would appear after the deadline and thus be too
late.
Why Refactoring works
 What is it that makes programs hard to work with? Four
things I can think of as I am typing this are as follows:
Programs that are hard to read are hard to modify.
Programs that have duplicated logic are hard
to modify.
Programs that require additional behavior that
requires you to change running code are hard
to modify.
Programs with complex conditional logic are hard
to modify.
 So, we want programs that are easy to read, that have
all logic specified in one and only one place, that do not
allow changes to endanger existing behavior, and that
allow conditional logic to be expressed as simply
as possible.
Problem with Refactoring
 Databases
 One problem area for refactoring is databases. Most business
applications are tightly coupled to the database schema that supports
them.That’s one reason that the database is difficult to change.
 Another reason is data migration. Even if you have carefully layered
your system to minimize the dependencies between the database
schema and the object model, changing the database schema forces
you to migrate the data, which can be a long and fraught task.
 Changing Interfaces
 Something that is disturbing about refactoring is that many of the
refactorings do change an interface.
 Design Changes That Are Difficult to Refactor
Considerable scenario for refactoring
 Duplicate Code
 Long Method
 Larger Class
 Long Parameter List
Conclusion
Refactoring is the process of taking a running program and
adding to its value, not by changing its behavior but by giving
it more of these qualities that enable us to continue
developing at speed.

More Related Content

Similar to Refactoring

Principlesinrefactoring 090906230021-phpapp01
Principlesinrefactoring 090906230021-phpapp01Principlesinrefactoring 090906230021-phpapp01
Principlesinrefactoring 090906230021-phpapp01
Sopheak Sem
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
Elizabeth Quinn-Woods
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
Madeline Gauthier
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
K. Dachos
 
Refactoring, A First Example
Refactoring, A First ExampleRefactoring, A First Example
Refactoring, A First Example
Vorleak Chy
 

Similar to Refactoring (20)

Principlesinrefactoring 090906230021-phpapp01
Principlesinrefactoring 090906230021-phpapp01Principlesinrefactoring 090906230021-phpapp01
Principlesinrefactoring 090906230021-phpapp01
 
Refactoring 2 The Max
Refactoring 2 The MaxRefactoring 2 The Max
Refactoring 2 The Max
 
Put to the Test
Put to the TestPut to the Test
Put to the Test
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
The Power Of Refactoring (4developers Krakow)
The Power Of Refactoring (4developers Krakow)The Power Of Refactoring (4developers Krakow)
The Power Of Refactoring (4developers Krakow)
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Devops Explained & Best Practices
Devops Explained & Best PracticesDevops Explained & Best Practices
Devops Explained & Best Practices
 
Refactoring PHP
Refactoring PHPRefactoring PHP
Refactoring PHP
 
How can JAVA Performance tuning speed up applications.pdf
How can JAVA Performance tuning speed up applications.pdfHow can JAVA Performance tuning speed up applications.pdf
How can JAVA Performance tuning speed up applications.pdf
 
The Power Of Refactoring (php|tek 09)
The Power Of Refactoring (php|tek 09)The Power Of Refactoring (php|tek 09)
The Power Of Refactoring (php|tek 09)
 
Top 10 React Development Tools to Choose in 2023.pptx
Top 10 React Development Tools to Choose in 2023.pptxTop 10 React Development Tools to Choose in 2023.pptx
Top 10 React Development Tools to Choose in 2023.pptx
 
Test driven development and react js application go hand in hand
Test driven development and react js application go hand in handTest driven development and react js application go hand in hand
Test driven development and react js application go hand in hand
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Refactoring, A First Example
Refactoring, A First ExampleRefactoring, A First Example
Refactoring, A First Example
 
7 Tools To Make React Development Faster and More Efficient
7 Tools To Make React Development Faster and More Efficient7 Tools To Make React Development Faster and More Efficient
7 Tools To Make React Development Faster and More Efficient
 
DevOps
DevOps DevOps
DevOps
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

Refactoring

  • 2. Refactoring What is Refactoring Why should we use Refactoring When should we use Refactoring When should not we use Refactoring Why Refactoring works Problem with Refactoring Some Scenario Conclusion
  • 3. What is Refactoring  a disciplined technique, used for restructuring an existing body of code  altering its internal structure without changing its external behavior  Its heart is a series of small behavior preserving transformations. Each transformation does little, but a sequence of transformations can produce a significant restructuring.  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.  Refactor (verb): to restructure software by applying a series of refactorings without changing its observable behavior.  it provides a technique for cleaning up code in a more efficient and controlled manner.
  • 4. Why should we use Refactoring  Refactoring Improves the Design of Software  It becomes harder to see the design by reading the code.  Regular refactoring helps code retain its shape.  Poorly designed code usually takes more code to do the same things, often because the code quite literally does the same thing in several places. Thus an important aspect of improving design is to eliminate duplicate code.  By eliminating the duplicates, you ensure that the code says everything once and only once, which is the essence of good design.  Refactoring Makes Software Easier to Understand  It does matter if it takes a programmer a week to make a change that would have taken only an hour if programmer had understood your code.  Refactoring Helps You Find Bugs  Refactoring helps programmer be much more effective at writing robust code.  Refactoring Helps You Program Faster  a good design is essential for rapid software development.  Without a good design, you can progress quickly for a while, but soon the poor design starts to slow you down. You spend time finding and fixing bugs instead of adding new function. Changes take longer as you try to understand the system and find the duplicate code.
  • 5. When should we use Refactoring  refactoring is not an activity you set aside time to do. Refactoring is something you do all the time in little bursts. You don’t decide to refactor, you refactor because you want to do something else, and refactoring helps you do that other thing.  The Rule of Three  Refactor When You Add Function  Refactor When You Need to Fix a Bug  Refactor As You Do a Code Review
  • 6. When should not we use Refactoring  A clear sign of the need to rewrite is when the current code just does not work. You may discover this only by trying to test it and discovering that the code is so full of bugs that you cannot stablilize it. Remember, code has to work mostly correctly before you refactor.  The other time you should avoid refactoring is when you are close to a deadline. At that point the productivity gain from refactoring would appear after the deadline and thus be too late.
  • 7. Why Refactoring works  What is it that makes programs hard to work with? Four things I can think of as I am typing this are as follows: Programs that are hard to read are hard to modify. Programs that have duplicated logic are hard to modify. Programs that require additional behavior that requires you to change running code are hard to modify. Programs with complex conditional logic are hard to modify.  So, we want programs that are easy to read, that have all logic specified in one and only one place, that do not allow changes to endanger existing behavior, and that allow conditional logic to be expressed as simply as possible.
  • 8. Problem with Refactoring  Databases  One problem area for refactoring is databases. Most business applications are tightly coupled to the database schema that supports them.That’s one reason that the database is difficult to change.  Another reason is data migration. Even if you have carefully layered your system to minimize the dependencies between the database schema and the object model, changing the database schema forces you to migrate the data, which can be a long and fraught task.  Changing Interfaces  Something that is disturbing about refactoring is that many of the refactorings do change an interface.  Design Changes That Are Difficult to Refactor
  • 9. Considerable scenario for refactoring  Duplicate Code  Long Method  Larger Class  Long Parameter List
  • 10. Conclusion Refactoring is the process of taking a running program and adding to its value, not by changing its behavior but by giving it more of these qualities that enable us to continue developing at speed.