+++
title = "Clean Code: A Handbook of Agile Software Craftsmanship - Robert C. Martin"
date = 2015-01-25

category = "review"

[taxonomies]
tags = ["books", "en-au", "robert c. martin"]
+++
{{ stars(stars=3) }}

<b>About the edition</b>

If there is one single weird thing about the Kindle edition is the code formatting. While reading code in non-monospaced font is weird but not impossible, reading code in non-monospaced font that is justified like normal text <em>is</em>.

The really annoying part is that, at the end of the book, the full listing of the discussed code is shown as "images", large blocks of code that don't follow the selected Kindle background and doesn't seem to allow selection, but it <em>is</em> monospaced and it is <em>not</em> justified. Why won't they use it all over the code is beyond me.

<b>About the content</b>

The book goes with a good start, listing almost all the pet peeves I have with other people code ("why the <em>fuck</em> they named things like <em>this</em>?", "why the <em>hell</em> this function have that many parameters?" and so on -- heck, even the problem with consistent style was there). Although it points the problem and how to improved it, it sometimes lacks the <em>why</em> those changes need to be made.

But, then, things start to really go downhill, with lots of stuff that contradicts previous statements (specially the Single Responsibility Principle), and a bunch of things that are language specific. There is one really good chapter that picks a code and goes slowly showing the principles discussed in the start of the book, applying one after the other, so you can see the code changing and becoming easier to read. The sad part is that it is used only once.

Honestly, I which there was a lot more of "why you should do this", only because as a seasoned programmer, I agree -- and use -- with a lot of the points in the book, but I lack the experience the tell younger programmers <em>why</em> they should not do what they are doing.

It's a good book, nonetheless, although not exceptionally good.