DEV Community

hossam rakha
hossam rakha

Posted on

The difference between clean code and clean architecture?

I've been exploring clean code and clean architecture lately and wanted to share what I've discovered about their differences.

Firstly, it's important to understand that clean code and clean architecture are distinct concepts.


Initially, when I aimed to write code that was easy to understand, I followed advice from articles on organizing folders, and classes, and dividing projects into sections. However, as my projects grew, I encountered a problem: my code started getting messy, and I couldn't figure out why.

clean code

Let's define clean Architecture:

Clean Architecture, introduced by Robert C. Martin (Uncle Bob), focuses on building software systems that are maintainable, scalable, and testable. It highlights the separation of concerns, independence from frameworks, and using abstractions for a clear and understandable architecture in applications.

On the other hand,

Clean code refers to well-structured, easily understandable, and maintainable code that adheres to best practices and coding standards. Also emphasized by Robert C. Martin, it revolves around writing code that's clear and straightforward to work with.

These concepts complement each other. Achieving readable software isn't solely about choosing the right software architecture. For instance, in Android development, there are various architectures like MVC, MVP, and MVVM, and in Flutter, options like BLoC or Provider State Management. These serve as guidelines to simplify software development by segregating concerns. Your choice depends on your team and software requirements.

But why does code still become messy despite using these architectures? The answer is simple: neglecting the basics of writing clean code. Choosing an architecture pattern is just one aspect. Lengthy functions, unclear variable names, poorly named classes, and disorganized code structures are the real issues.

To address this:

Before delving into software architecture debates, focus on writing readable code.
Consider the practical tips for writing cleaner code from resources like:

  1. Clean Code — A practical approach

  2. Article

  3. Java GitHub repository

  4. Dart GitHub repository

Once you grasp the basics of clean code, then proceed to choose a suitable software architecture for your project. You can explore further by reading the "Clean Code" book by Uncle Bob and apply your knowledge to build cleaner, more maintainable software.

Top comments (0)