+ All Categories
Home > Technology > Speeding up web_application

Speeding up web_application

Date post: 18-Jul-2015
Category:
Upload: achintya-kumar
View: 176 times
Download: 0 times
Share this document with a friend
Popular Tags:
35
Anand Bait Developer Allerin Tech Pvt Ltd
Transcript
Page 1: Speeding up web_application

Anand Bait

Developer

Allerin Tech Pvt Ltd

Page 2: Speeding up web_application

Refactoring Code

Making code better, may not be faster

Better structured, better built

More readable, more understandable

Easy to work with

Easy to add new features

Easy to spot and fix bugs

Keeping code in control

Improving existing code

Page 3: Speeding up web_application

Contents Introduction to Refactoring

Method-Level Refactoring

Class and Condition Focused Refactoring

Data Focused Refactoring

Communication and High Level Refactoring

Conclusion

Page 4: Speeding up web_application

What ‘REFACTORING’ is? Techniques of improving code that already exists

No rules that anyone can blindly follow to improve code

Techniques of recognize issues as per consciousness

Applied without thinking will be dangerous

Page 5: Speeding up web_application

What ‘REFACTORING’ is NOT? Not debugging

Not adding feature

Not changing observable behavior of code

Not performance improving

Page 6: Speeding up web_application

Why to use?

Page 7: Speeding up web_application

When to use? Write – Scan – Refactor at the end : INCORRECT

Write – Scan – Refactor regularly : CORRECT

Code reviews

How to use?

Page 8: Speeding up web_application

Code smell Duplicated code

Long methods

Comments

Doesn’t tell what to do but tells us what to notice

Page 9: Speeding up web_application

Method Level Refactoring Preparing to refactor

Grouping refactorings together

Using the Extract Method refactoring

Extract Method with parameters and variables

Common code smells for Extract Method

Using IDEs for the Extract Method refactoring

The Inline Method refactoring

Refactorings that remove temps

Refactorings that add temps

Page 10: Speeding up web_application

Preparing to refactor Requirement of automated testing vs manual testing

Page 11: Speeding up web_application

Grouping refactorings together Individual Method(name? parameters? Temp

variables? Duplicate? Too much in method?)

Context of method in class (right class? similarity with other methods class)

Communication between classes(inheritance)

Page 12: Speeding up web_application

Extract Method refactoring Smaller and specific is better

Provides reusability

Ease of overriding while using inheritance

Page 13: Speeding up web_application

Extract Method with parameters

Parameters should be related to the method

Extract Method with variables Temporary variables can be extracted

Page 14: Speeding up web_application

Code smells for using Extract Method Long method

Comments(having comments vs need comments)

Page 15: Speeding up web_application

Inline Method refactoring Removing method that adds no value

Page 16: Speeding up web_application

Refactoring to remove temps Increase temptation to write longer methods

Change temps to small methods

Page 17: Speeding up web_application

Refactoring to add temps Split temporary variables

Introduce explaining variables

Remove assignments to parameters

Page 18: Speeding up web_application

Split temporary variables Don’t use same temporary variable for different

purposes

Page 19: Speeding up web_application

Introduce explaining variables To improve readability

Introduce when a small method may not be required

Page 20: Speeding up web_application

Remove assignments to parameters

Add temporary variables that assigns value to parameters may give undesired results

Page 21: Speeding up web_application

Class and Condition Focused Refactoring Move Method

Extract Class and Inline Class

Making conditions easier to read

Replacing conditions with polymorphism

Replacing type code with subclasses

Page 22: Speeding up web_application

Move Method Move method from one class to another

When a method interact with multiple classes then move it to the class with which it interacts more

Code smell: feature envy, inappropriate intimacy, shotgun surgery

Page 23: Speeding up web_application

Extract Class and Inline Class Code smell: Large class

Page 24: Speeding up web_application

Making conditions easier to read Decompose conditionals

Consolidate conditionals

Consolidate duplicate conditionals

Page 25: Speeding up web_application

Replacing conditions with polymorphism

Conditions to check custom behavior

Page 26: Speeding up web_application

Replacing type code with subclasses Data can be categorized into subclasses

Page 27: Speeding up web_application

Data Focused Refactoring Moving and encapsulating fields

Working with data clumps

Simplifying method calls and parameter use

Pulling and pushing methods and fields

Page 28: Speeding up web_application

Moving and encapsulating fields If a field is more related and being used by the other

class

Page 29: Speeding up web_application

Working with data clumps Preserve whole object

(instead of parameters pass object)

Introduce parameter object

(minimize parameters list by creating a class for set of parameters)

Page 30: Speeding up web_application

Simplifying method calls and parameter use Rename method

Remove parameter

Add parameter

Parameterize method

(same behavior multiple methods)

De-parameterize method

(same type of parameter but different behavior depending on parameter)

Separate Query from Modifier

(split method with individual focus on functioning)

Page 31: Speeding up web_application

Pulling and pushing methods and fields

Pull up method

Pull up field

Push down method

Push down field

Page 32: Speeding up web_application

Communication and High-Level Refactoring

Refining hierarchies

Extract superclass, Extract subclass, collapse hierarchy

Communication refactoring

Code smell: message chain, middle man

Larger scale refactoring

Convert procedural to OO

Code smell: large classes, god classes, dumb data

Page 33: Speeding up web_application

Conclusion

Page 34: Speeding up web_application

References http://refactoring.com

Page 35: Speeding up web_application

Thank you


Recommended