Find some code snippets that can be grouped and called atomically.
TL;DR: Group your cohesive sentences together
-
Readability
-
Complexity
-
Code Reuse
Code Smell 03 - Functions Are Too Long
Code Smell 05 - Comment Abusers
Code Smell 18 - Static Functions
-
Move the code fragment to a separate new method
-
Replace the old code with a call to the recently created method.
object Ingenuity {
fun moveFollowingPerseverance() {
// take Off
raiseTo(10 feet)
// move forward to perseverance
while (distanceToPerseverance() < 5 feet) {
moveForward()
}
// land
raiseTo(0 feet)
}
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
}
}
[X] Automatic
Many IDEs support this safe refactoring
This is a safe refactoring.
Code is more compact and easier to read.
Functions can be reused.
Algorithms and functions are more declarative hiding implementative details on extracted code.
Does not work well if you use meta-programming anti-pattern.
-
Complexity
-
Readability
- Move method to a new class
This article is part of the Refactoring Series.