
Find some code snippets that can be grouped and called atomically.
TL;DR: Group your cohesive sentences together
Problems Addressed
Readability
Complexity
Code Reuse
Related Code Smells
Steps
Move the code fragment to a separate new method
Replace the old code with a call to the recently created method.
Sample Code
Before
object Ingenuity {
fun moveFollowingPerseverance() {
//take Off
raiseTo(10 feet)
//move forward to perseverance
while (distanceToPerseverance() < 5 feet){
moveForward()
}
//land
raiseTo(0 feet)
}
After
object Ingenuity {
//1. Move the code fragment to a separate new method
private fun takeOff() {
raiseTo(10 feet)
}
//1. Move the code fragment to a separate new method
private fun moveForwardToPerseverance() {
while (distanceToPerseverance() < 5 feet){
moveForward()
}
}
//1. Move the code fragment to a separate new method
private fun land() {
raiseTo(0 feet)
}
fun moveFollowingPerseverance() {
takeOff()
//2. Replace the old code with a call to the recently created method.
moveForwardToPerseverance()
//2. Replace the old code with a call to the recently created method.
land()
//2. Replace the old code with a call to the recently created method.
}
}
Type
[X] Automatic
Many IDEs support this safe refactoring
Why code is better?
Code is more compact and easier to read.
Functions can be reused.
Algorithms and functions are more declarative hiding implementative details on extracted code.
Limitations
Does not work well if you use meta-programming anti-pattern.
Tags
Complexity
Readability
Related Refactorings
- Move method to a new class
Credits
This article is part of the Refactoring Series.
About the author
I’m a senior software engineer loving clean code, and declarative designs. S.O.L.I.D. and agile methodologies fan.
Comments
Join the discussionThis is interesting to see how you work through fixing issues.
Might I know how you were able to embed your other posts info this one?
thank you.
you should embed your links with %[]
see guide while editing

I will absolutely be coming back to your articles for reference.
Let me go check that out, Thank you





