DEV Community

Yonatan Karp-Rudin
Yonatan Karp-Rudin

Posted on • Originally published at yonatankarp.com on

2 2

Kotlin Code Smell 2 - Functions Are Too Long

ojk816llxyjq794m5m7a.png

TL;DR: Refactor and extract functions longer than 5-10 lines of code.

Problems

  • Low cohesion

  • High coupling

  • Difficult to read

  • Low reuse

Solutions

  • Refactor.

  • Create small objects to handle specific tasks and unit test them.

  • Compose methods.

Examples

  • Libraries

Sample Code

Wrong

class ChessBoard() {
    init {
        placeOnBoard(whiteTower)
        placeOnBoard(whiteKnight)
        // All other white pieces

        // Empty space to pause definition
        placeOnBoard(blackTower)
        placeOnBoard(blackKnight)
        // All other black pieces
    }

    fun placeOnBoard(piece: Piece) = TODO()
}
Enter fullscreen mode Exit fullscreen mode

Right

class ChessBoard() {
    init {
        placeWhitePieces()
        placeBlackPieces()
    }

    private fun placeWhitePieces() = TODO()
    private fun placeBlackPieces() = TODO()
}
Enter fullscreen mode Exit fullscreen mode

Conclusion

Extract long methods into smaller pieces. Break down complex algorithms into parts. This approach allows for easier unit testing and improves readability while ensuring the correct level of abstraction in your method.


Stay updated with my latest thoughts and ideas by registering for my newsletter. Connect with me on LinkedIn or Twitter. Let's stay connected and keep the conversation going!


More info

Credits

Sentry mobile image

Mobile Vitals: A first step to Faster Apps

Slow startup times, UI hangs, and frozen frames frustrate users—but they’re also fixable. Mobile Vitals help you measure and understand these performance issues so you can optimize your app’s speed and responsiveness. Learn how to use them to reduce friction and improve user experience.

Read the guide →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs