One of the most memorable statements from Clean Code was the author describing some of his own example code as a “festering pile.” And he doesn’t just use the term once, he uses it multiple times.
The most important statement however comes after he goes through how he cleans up his code and he is going over key points at the end of the chapter.
It is not enough for code to work. Code that works is often badly broken. Programmers who satisfy themselves with merely working code are behaving unprofessionally.
– Uncle Bob in Clean Code
Get It Working, Then Clean It Up
Don’t get me wrong, you should get your code working. If it does not work, it is completely useless.
But that is not where you stop.
When you stop here, it becomes difficult to add features to your program and makes it more likely that you will introduce errors later.
As a professional programmer and creator, cleaning up your code after you get it working is a must.
What’s That Smell?
As I am working on my current game, I started noticing that some of my own code was becoming a bit of its own smelly, festering pile.
Classes were getting a little clunky, functions where getting a little too long, and it was taking longer to make small changes.
Since I am trying to write the same logic in 2 different languages (Monkey-X for the client and Ruby for the server), having clean code was even more important to be able to replicate the logic in a second language.
And with the code getting a little cluttered, there started being some hard to figure out bugs where the client would show one thing, but the server would do another.
I finally got the code behaving the same and it took longer than it should have.
Now it is time to get rid of some of these smells. The way to do that in programming is refactoring.
This is basically what Clean Code was all about. Changing your code to be more clear and designing the classes and methods to be easier to change (think DRY and SRP) have your code smelling like fresh linen.
That is what I am working on now with Drone Tournament. My original goal this year was to finish a game every 3 months, but I don’t want a half baked game. So I am taking the time to refactor the code and clean it up because I am a professional.