A Collection of Coding Rules gathered over the years...
In the words of Suzi Quatrro, Wernher von Braun may have been "a fucking Nazi", but he had a point. How often have you not tested someting because there was a prevailing opinion of "what could possibly go wrong?", or "of course it will work!".
- If it's not tested, it doesn't work.
- If there is a bug, the user will find it.
- A code review is not a criticism.
- It's not the quantity of code that matters, it's the quality. Any idiot can bang out 40kloc (kilo-lines of code) but that doesn't make it fit for purpose.
- Eat your own dog food — fixing bugs in your own code helps you code better and improves your understanding.
- Just because you wrote it doesn't mean you own it — don't be offended if someone else on your team has to change your code.
Don't reinvent the wheel, library code is there to help.
- Just because you didn't write it doesn't mean it's crap.
- The fastest code is code that's never executed — look for early outs.
- Source code is just a hint to the compiler about what you want to do, it won't necessarily do it (e.g. You might declare a function as inline but the compiler doesn't have to obey).
Creating Maintainable Code
Code that's hard to understand is hard to maintain.
- Code that's hard to maintain is next to useless.
- The neater your code layout, the easier it is to read. The easier it is to read, the easier it is to understand and maintain.
- Code is not self documenting. Help others by adding comments to guide them. You may understand it now but what about in 5 years time?
- Magic numbers (i.e. hard-coded values in code) are bad.
- Constants don't take up storage, they're compile time text substitutions.
- The true cost of poorly written code is in the maintenance.
- Code rots over time.
- Bad Code can and will come back to haunt you.
- Project management will always want you to do twice as much in half the time.
- There is no such thing as a 5 minute job. It'll always take at least half a day.
- “Whilst I'm editing this file I’ll just…” is a great way to introduce feature creep and bugs.
- If the user didn't ask for a feature, don't add it.
- Source control is your friend - make sure you use it.
- Make sure you back up your work. Source Control is not the same as backing up.