by T Ashok @ash_thiru on Twitter
Summary
As much as testing is seen as a key activity to deliver quality, there are simple practices that can ensure that code developed is constantly cleansed. In current times where code is churned out at a rapid pace, it makes great business sense to contain the entropy continually. This article outlines ten simple tips to help produce clean code continually.
“Great quality code is not the result of intense system testing, it is result of well structured filtration of issues from the early stages. A compromised ‘unit test’ puts unnecessary strain on the QA folks who seem to be compelled to go after these issues at the expense of system test.”
Developers do not deliberately write bad code, it is just that accidents happen. Accidents happen due to a variety of reasons – unclear requirements and therefore making assumptions, just sloppy coding, brute force push of unit testing without it being simple and practical, over reliance of testing rather than prevention, not enough refactoring, not enough focus on non-functional requirements(NFR).
Here is how I feel as a developer as a poem titled “Hug each bug”
On a quiet night I sat down to code Happiness in every byte On the keyboard, it just flowed Sheer poetry it was But quietly slipped in tiny flaws Silly it was, what I found When the code ran aground An exception I missed And the code really pissed Forgot to catch the ball The system had a mighty fall Bugs are uninvited guests Makes you beat your breasts That is why you need to test So that you deliver your best I say Hi to every bug From each one I learn Embrace with a warm hug For perfection is what I yearn — If you want a lovely poster version of this, click here.
What may be some tips that I as a developer can follow to write clean code?
- “Never assume, ask, question”
Requirements are never complete, it just gets refined with time. Don’t assume when something is unclear. - “Think of behaviour in terms of conditions”
Good behavior is about compliance to conditions,ensure combinations are well taken care. - “Be friends with bug(s)”
Do not hate bugs, for they are the ones from who teach you constantly to do better. Learn from each, so that you find it and not others. - “Use smart checklists”
While coding, be sensitive as what issues can occur. Sensitise & prevent rather than rely only on test to find issues. - “Treat code as a living entity”
Nothing is frozen. Refactor, refactor constantly to simplify. Clean code is really never done, how much you can do is simply limited by time. - “Be sensitive to NFRs”
Non-functional requirements cannot be ‘fitted’ in later, so pay attention to load, performance, usability scaling, security, maintainability etc. always. - “Don’t be scared to inject bad inputs”
Checking correctness with good inputs are fine, but it is incorrect inputs/settings that create unwanted technical debt. Get these out of way early, by ensuring robustness at early stage. - “Be purposeful of issues to find via unit test”
There are different types of issues that may be there, be clear as to what to strive to prevent, what to go after via unit test and what at higher levels of testing. Ensure clarity of what you are going after. - “Strive to understand how your code will be consumed”
It is not meeting a spec, it is not working in isolation, it is about visualising who (i.e other code) will use/consume my code so it can take care of the situations in future. - “Unit test is not an after thought or compliance”
The act of unit testing is not a chore or compliance to satisfy someone, it should be natural thing that we do to ensure our code does not stray. Treat this as part of coding, not as another activity post code. Write a script while doing this or jot down stuff to perform this manually. Stay lightweight so that you can repeat this continually. After all, development should be friction-less.
About SmartQA The theme of SmartQA is to explore various dimensions of smartness to leapfrog into the new age of software development, to accomplish more with less by exploiting our intellect along with technology. Towards this, we will strive to showcase interesting thoughts, expert industry views through high-quality content as articles, posters, videos, surveys outlined as a SmartQA Digest weekly emailer. SmartBites is soundbites from smart people”. Ideas, thoughts and views to inspire you to think differently.