Humans get bored beyond line 10.
TL;DR: Refactor and extract functions longer than 5 lines.
Problems
- Low Cohesion
- High coupling
- Difficult to read
- Low Reuse
Solutions
1) Refactor
2) Create small objects dealing with some tasks. Unit test them.
3) Compose methods
Examples
- Libraries
Sample Code
Wrong
<?
function setUpChessBoard() {
$this->placeOnBoard($this->whiteTower);
$this->placeOnBoard($this->whiteKnight);
//A lot of lines
//.....
$this->placeOnBoard($this->blackTower);
}
Right
<?
function setUpChessBoard() {
$this->placeWhitePieces();
$this->placeBlackPieces();
}
Detection
All linters can measure and warn when methods are larger than a predefined threshold.
Relations
Also Known as
- Long Method
More info
Tags
- Complexity
Conclusion
Extract long method into smaller pieces. Break complex algorithms in parts. You can also unit test these parts.
Credits
Photo by Hari Panicker on Unsplash
Programs are meant to be read by humans and only incidentally for computers to execute.
Donald Knuth
Software Engineering Great Quotes
Maxi Contieri ・ Dec 28 '20
This article is part of the CodeSmell Series.
How to Find the Stinky parts of your Code
Maxi Contieri ・ May 21 '21
Last update: 2021/06/01
Top comments (4)
The funny thing is that
placeWhitePieces()
andplaceBlackPieces()
will need to call each placement inside which then we'll need to separate into single functionsplaceKing($this)
and get$this->color
inside to keep them atomic.So it's just a matter of ordering the code at the end.
as always :)
A developer I really respect said, "a developer can only hold one screen's worth of code at one time." And sets the function limit according to how big the average developer's screens are. I also like the way you said it, "humans get bored beyond line 10."
Sorry, but at first glance I didn't see any difference among the right and wrong code.