Goodreads helps you keep track of books you want to read.
Start by marking “Clean Code: A Handbook of Agile Software Craftsmanship” as Want to Read:
Clean Code: A Handbook of Agile Software Craftsmanship
Enlarge cover
Rate this book
Clear rating
Open Preview

Clean Code: A Handbook of Agile Software Craftsmanship

4.38  ·  Rating details ·  9,008 Ratings  ·  542 Reviews
Even bad code can function. But if code isn t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn t have to be that way.
Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship . M
Paperback, 434 pages
Published August 11th 2008 by Prentice Hall (first published January 1st 2007)
More Details... edit details

Friend Reviews

To see what your friends thought of this book, please sign up.

Reader Q&A

To ask other readers questions about Clean Code, please sign up.

Be the first to ask a question about Clean Code

Community Reviews

(showing 1-30)
Rating details
Sort: Default
Oana Sipos
Mar 08, 2015 is currently reading it
These are rather notes than a review while reading:

1. Use very descriptive names. Be consistent with your names.
2. A function should not do more than one thing.
3. SRP (Single Responsibility Principle): a class or module should have one, and only one, reason to change.
4. Stepdown rule: every function should be followed by those at the next level of abstraction (low, intermediate, advanced).
5. A long descriptive name is better than a short enigmatic name. A long descriptive name is better than a
Francis Fish
The first half of this book is well worth a read. Then I was reminded of Martin Fowler's (I think) comment that the original Design Patterns Elements of Reusable Software book was a response to the limitations of C++. It dovetailed so well into Java because Java has a lot of the same annoying limitations, and in some ways is even harder.

The latter section of the book contains some worked examples that I didn't always agree with because they seemed to be totally over done. A lot of the refactorin
Apr 14, 2011 rated it really liked it
Shelves: swe
This book makes some very good points, sometimes taking them to extreme ("Never write functions longer than 15 lines! Never write functions with more than three arguments!"). Some of these points were quite new and useful for me - YMMV. It's too Java-specific in a few places, and reading the last refactoring chapter on a kindle was quite a challenge, but otherwise it was well worth a read. At least I got a clear picture of how I want to refactor a big piece of my current project after reading th ...more
Jan 08, 2009 rated it liked it
Shelves: technical
I had a tough time deciding between 3 or 4 stars.

The book should be called Clean Java Code. Some of the concepts definitely translate to other languages, but it uses Java for all of the examples and some of the chapters are dedicated to Java-specific issues.

I consider many of the the suggestions to simply be common sense, but I've worked with enough of "other people's code" to realize they don't necessarily agree. With all of that said, I'd definitely recommend the book to Java developers at th
Feb 21, 2017 rated it it was amazing
If you are a programmer, you must read it! full of good examples of how to write clean and readable code.
Rod Hilton
Oct 03, 2008 rated it really liked it
There is a movement brewing in the world of professional software development. This movement is concerned not merely with writing functional, correct code, but also on writing good code. Taking pride in code. This movement is the Software Craftsmanship movement, and one of the people near the head of this movement is Robert C. Martin, also known as Uncle Bob.

His book "Clean Code" is, in many ways, an introduction to the concept of Software Craftsmanship and a guide for developers interested in b
Oct 03, 2013 rated it liked it
Shelves: computers
Many good points in this book. Unfortunately, almost all of them are overdone. Yes, you should write short functions, if possible. Yes, you should have functions that do one thing.

But no, "one thing" does not mean you should tear an algorithm apart into twenty little funclets that make no sense on their own.

Basically, like another reviewer wrote, the first part of the book raises many good points, and the second part of the book then merrily applies these points way beyond their usefulness. Read
Kosala Nuwan Perera
Feb 07, 2011 rated it really liked it
I had a tough time deciding whether I really liked or It was amazing. I liked the writing style of the book. Its simple, clean, and well crafted.

First few chapters of the book makes good practical advice from naming variables-functions-classes to writing functions to testing. Most of the smells and heuristics I found in these chapters can be found in real-world as well.

Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build, and test. - Ray Ozzie, CTO, M
This is a book that one could get started on the idea of "good code" - clean, readable, elegant, simple, easy-to-test, etc. It has the usual stuff that you'd expect - good naming convention, testable code, single responsibility, short classes, short methods - but I feel like it takes them on overdose, going to extremes (IMHO) such setting short explicit lengths, forbidding certain constructs, and what seems like refactoring for the sake of it.

I'd actually recommend other books like the Pragmatic
Craig Vermeer
Jan 04, 2010 rated it it was amazing
Shelves: tech
This had lots of good, practical advice that spanned everything from naming to testing to concurrency. A lot of it was pretty Java centric, so I skimmed a few sections.

By far the best portions of the book were the ones where the author demonstrates -- step by step -- his process for writing code test-first, as well as refactoring.

If you get frustrated with either of the two at times, these parts of the book are *fantastic*, because you see that even someone who's been coding for 40+ years (like
Alex Ott
Mar 12, 2011 rated it liked it
Shelves: programming
Nothing new for experienced developer...
Too Java oriented in many places. Code Complete, 2ed is better from my point of view
Erika RS
May 29, 2012 rated it liked it
Shelves: software
I wanted to love this book, but instead I just sort of liked it. This book is a member of the extensive genre of books on how to write clean code. It sits alongside books like Code Complete by Steve McConnell[1] and many others. Where Clean Code promised to differentiate itself was in the use of three case studies -- about a third of the book -- showing Martin's code cleanup techniques in action.

However, I was disappointed by that section. As someone who codes and reviews code professionally, t
Erkan Erol
Mar 01, 2017 rated it really liked it
Writing clean code is what you must do in order to call yourself a professional. There is no reasonable excuse for doing anything less than your best.
“Honesty in small things is not a small thing.”
In code, refactor mercilessly.
The French poet Paul Valery advises us that a poem is never done and bears continual rework, and to stop working on it is abandonment.
Learning to write clean code is hard work. It requires more than just the knowledge of principles and patterns. You must sweat
Nick Hodges
Apr 02, 2015 rated it really liked it
I hate to say this, but I wasn't as impressed with this book as I thought I should have been, given its place in the pantheon of programming books.

The first half was excellent, but the second half left me a bit cold. It was too Java-y, and had -- dare I say it -- too much code in it.

However, I still list this as a must read for all developers.
Jul 26, 2013 rated it really liked it
I should have read this book at the beginning of my career. On the other hand, after 10 years experience I may appreciate it even more. It is sad, that principles described in the book are not yet heavily adopted.
Jan 20, 2011 rated it it was amazing
Definitely worth a read ... :-)
Stefan Kanev
May 28, 2010 rated it really liked it
It's a great book. The only reason I give it four stars instead of five is the extremely awkward use of private fields for passing data between functions in the examples.
Yu Chao
Nov 16, 2017 rated it liked it
It provides some noteworthy principles to keep your code readable and clean. However, personally, I still prefer the "get things done" approach rather than "spend tons of time doing code cleaning while completing little".

I see that Martin really regards software development as an intricate art form...which I hardly agree (I see coding more of a technical tool). So that's probably the reason why I found this book quite uninteresting.
Tadas Talaikis
Mar 13, 2017 rated it liked it
You're joking with this productivity vs time. That's old oversimplified thinking. It has some truth, but also it produces fast shortcuts that later lead to blue screens in MS presentations. I probably would always remember them, haha.

No, even more recent, Surface tab crashes on presentation:

Where's you productivity now? This is all shit, because I can create complex website in a few weeks, but then I would need months to fix various bugs (e.g. provide "support"). I always say those meaningless u
Aug 09, 2010 rated it really liked it  ·  review of another edition
Recommended to Nikolay by: Stefan Kanev
I loved and I agree with the clean code values the book embodies.

Also, I loved the slight extremism of the rules: never write a function more than 15 lines, never use more than 3 arguments! Of course I will break those rules. But remembering Uncle Bob's fervor when stating the rules, I will always make sure to have a good reason to break them.

The major drawback is that the book is very Java-centric and the examples didn't prove as practical for me, as they could've been. Abstract classes, interf
Guilherme Ferreira
Jul 04, 2014 rated it it was amazing
Recommended to Guilherme by: Robson Castilho
Com este livro pude compreender melhor como organizar código e programar de forma mais legível. O livro trata dos mais diversos assuntos desde testes, funções, exceções, nomes, abstrações e muitos outros tudo isso da ótica da legibilidade de código. Com diversos exemplos práticos de como algumas escolhas ruins podem quebrar princípios básicos da orientação à objeto e se tornarem monstros posteriormente e o mais importante como fazer da forma correta (legível).

O livro também define um conjunto de
Oct 28, 2008 rated it liked it
Shelves: nonfiction, tech
This book is repetitive at times and mentions content already covered in some of the other books in the Robert C. Martin series. I think part of this repetition is due to many of the chapters being authored by different writers, which also occasionally prevents the book from flowing smoothly.

The book is a quick read and raises some interesting arguments on how code should be written. However, if you've read other books in the Robert C. Martin series, you might skip this one. Or if you have the c
Mahmoud Tantawy
Mar 07, 2017 rated it really liked it
One of the best books about "Software Craftsmanship", a must read, specially "Chapter 17: Smells and Heuristics".

A lot of positive reviews have been written about it so i'll just add what i think can be improved.

The book can be a bit boring specially if you are not a Java developer, and even if you are, it is outdated so examples can be a bit misleading and/or seem strange, it is written when Java 5 was new!

I'd love if a modern revision of the book is published with modern examples and may be le
Nick Skelton
Feb 12, 2015 rated it it was amazing
Shelves: coding
Uncle Bob's book was given to me by a mate at work when I first started. I was introduced to the concept of code reviews and pull requests and told to expect a lot of comments on my code reviews to start with. I was then promptly given this book to read to minimise the pain. As a developer with ten years experience, I had seen so many of the things outlined by Uncle Bob and absolutely loved his remedies to them. I am now a convert to the idea of clean code and it has definitely made me a better ...more
Pablo Dias
Aug 05, 2012 rated it liked it
Reading this book was a slight deception, not because of the content, but mainly because it's a bit messy. The chapters don't correlate with each other very well, and the examples of refactoring are very boring (Java's fault?). Even with an excellent conclusion, that summarizes very well all the code smells you must avoid, it didn't impact me the way "The Pragmatic Programmer" did. I really hope this book works better with less experienced programmers, though.
Babak Ghadiri
Feb 21, 2017 rated it liked it
به نظرم این کتاب برای برنامهنویسان تازه کار خوبه. خیلی از چیزهایی که توش گفته شده رو به شکل تجربی میشه بهشون رسید. من یه فصلش رو که توش یک تکه کد رو ریفکتور میکرد رو چاپ کردم که خط به خط و با دقت بخونم، ببینم زمان ریفکتور چی تو ذهنش میگذره. بعد دیدم چیز خیلی عجیبی نبود و من هم اگه بودم شبیه همین کارها رو میکردم. کلا هم فصل آخرش
(Smells and Heuristics)
رو بخونید خوبه.
به نظرم کتاب ریفکتورینگ آقای فاولر خیلی کتاب باارزشتریه در این زمینه
Anton Antonov
Nov 14, 2014 rated it it was amazing
Shelves: technical
Another must read for software developers. It's a time-saver for every company and new worker that wants to start writing good, quality and maintainable code for companies.
Nov 22, 2009 rated it it was amazing
This book is #1 on my list of books I'd recommend to other programmers. I don't know how else to elaborate on how important I think the ideas in this book are.
Mar 13, 2014 rated it it was amazing
Shelves: programming
One of the best programming books I've ever read
Marcelo Quinta
Feb 02, 2015 rated it it was amazing
A MUST READ for every developer, not only the agile guys. Its about the right way to design and develop
« previous 1 3 4 5 6 7 8 9 next »
topics  posts  views  last activity   
SF Ruby Book Club: Making good programming habits 3 22 Mar 13, 2015 03:33PM  
  • Working Effectively with Legacy Code
  • Refactoring: Improving the Design of Existing Code
  • Growing Object-Oriented Software, Guided by Tests
  • Test Driven Development: By Example
  • Domain-Driven Design: Tackling Complexity in the Heart of Software
  • Refactoring to Patterns (Addison Wesley Signature Series)
  • The Passionate Programmer
  • Head First Design Patterns
  • xUnit Test Patterns: Refactoring Test Code
  • Code Complete
  • Design Patterns: Elements of Reusable Object-Oriented Software
  • The Productive Programmer
  • Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)
  • The Art of Unit Testing: With Examples in .NET
  • Pragmatic Thinking and Learning: Refactor Your Wetware
  • The Pragmatic Programmer: From Journeyman to Master
  • Programming Pearls
  • Effective Java Programming Language Guide

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »
Robert Cecil Martin, commonly called Uncle Bob, is a software engineer, advocate of Agile development methods, and President of Object Mentor Inc. Martin and his team of software consultants use Object-Oriented Design, Patterns, UML, Agile Methodologies, and eXtreme Programming with worldwide clients.

He was Editor in Chief of the C++ Report from 1996 to 1999. He is a featured speaker at internatio
More about Robert C. Martin...
“Truth can only be found in one place: the code.” 34 likes
“It is not enough for code to work.” 18 likes
More quotes…