Skip to content

Latest commit

 

History

History
110 lines (64 loc) · 2.93 KB

File metadata and controls

110 lines (64 loc) · 2.93 KB

Code Smell 03 - Functions Are Too Long

Code Smell 03 - Functions Are Too Long

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

Refactorings

Refactoring 010 - Extract Method Object

Examples

  • Libraries

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

All linters can measure and warn when methods are larger than a predefined threshold.

Relations

Code Smell 75 - Comments Inside a Method

Code Smell 102 - Arrow Code

Code Smell 206 - Long Ternaries

Tags

  • Complexity

Conclusion

Extract the long method into smaller pieces. Break complex algorithms into parts. You can also unit-test these parts.

Also Known as

  • Long Method

More Info

Refactoring Guru

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


This article is part of the CodeSmell Series.

How to Find the Stinky Parts of your Code