Humans get bored after line five.
TL;DR: Refactor and extract functions longer than 5 lines.
Problems π
- Low cohesion
- High coupling
- Hard to read
- Low reusability
Solutions π
- Refactor
- Create small objects to handle specific tasks. Unit-test them.
- Compose methods
- Divide and conquer
Refactorings βοΈ
https://maximilianocontieri.com/refactoring-010-extract-method-object?embedable=true
https://hackernoon.com/refactoring-025-decompose-regular-expressions?embedable=true
https://hackernoon.com/improving-the-code-one-line-at-a-time?embedable=true
Examples
- Libraries
Context π¬
When you write a long function, you hide too many details in one place.
You force the reader to hold multiple concepts in mind.
You mix unrelated responsibilities and make the code hard to test.
You create a rigid block that breaks easily when you change it.
Short, focused functions let you read, test, and modify code faster.
Sample Code π
Wrong π«
<?
function setUpChessBoard() {
$this->placeOnBoard($this->whiteTower);
$this->placeOnBoard($this->whiteKnight);
// A lot more lines
// Empty space to pause definition
$this->placeOnBoard($this->blackTower);
$this->placeOnBoard($this->blackKnight);
// A lot more lines
}
Right π
<?
function setUpChessBoard() {
$this->placeWhitePieces();
$this->placeBlackPieces();
}
Detection π
- [x]Automatic
All linters can measure and warn when methods exceed a predefined threshold.
Tags π·οΈ
- Bloaters
Level π
- [x]Beginner
Why the Bijection Is Important πΊοΈ
A real-world action should map to a clear, concise function.
When you pack many actions into one function, you lose that mapping.
Developers must mentally reconstruct the steps, which slows comprehension and increases errors.
AI Generation π€
AI generators often create long functions if you give them vague prompts.
They tend to cram all logic into one place unless you explicitly request modular code.
AI Detection π₯
AI tools can fix this smell with the right instructions to split code into small, focused functions.
Try Them! π
Remember: AI Assistants make lots of mistakes
Suggested Prompt: Convert it to more declarative
Without Proper Instructions |
With Specific Instructions |
---|---|
Conclusion π
Extract long methods into smaller pieces.
Break complex algorithms into parts.
You can also unit test these parts.
Relations π©ββ€οΈβπβπ¨
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xv
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxi
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xlii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xv
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxi
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xvii
More Information π
https://refactoring.guru/es/smells/long-method?embedable=true
Also Known as
- Long Method
Credits π
Photo by Hari Panicker on Unsplash
Programs are meant to be read by humans and only incidentally for computers to execute.
Donald Knuth
https://hackernoon.com/400-thought-provoking-software-engineering-quotes?embedable=true
This article is part of the CodeSmell Series.
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-i-xqz3evd?embedable=true