What is clean code?¶
This article I want to start with a very good quote: “Any fool can write code that a computer can understand. Good programmers write code that humans can understand2.” – Martin Fowler. This quote very good explains the essence of clean coding.
Your code should be as efficient, readable, and maintainable as possible, and instead of only solving the problem, you should always put a bit of extra time to also focus on the design of your code, on architecture. Because your code should be understandable, should be clean. This means the code is easy to read, whether that reader is the original author of the code or somebody else. There shouldn’t be doubts and misunderstandings. For example, the following should be clear: execution flow of the application, how different objects collaborate with each other, the role and responsibility of each class, each method purpose, purpose of each expression and variable, etc.
8 reasons why clean code matters¶
1. Clearness¶
It’s easy to forget that each line of code software developers write is likely to be read many times by humans during its lifetime. These humans are usually co-workers. They’re busy fixing bugs and adding features. Therefore each developer should take care of the code and make it as clean and clear as possible. Developers are like authors, great authors are known for writing books that tell a clear, compelling story. They use chapters, headings, and paragraphs to clearly organize their thoughts and painlessly guide their reader. Developers work in a very similar system, but simply use different words of namespaces, classes, and methods.
2. Best practices¶
In recent years software best practices like unit testing, TDD, CI, etc. are growing very fast in terms of adoption. These practices elevate code quality and maintainability. Implementing clean code principles is a foundational skill that pays off especially well when it’s time to refactor code or bring code under test. Clean code makes it easier to read and test. If you think of it as part of a house, clean code is the foundation.
- Logic behind the code If someone asks you about your code quality, you should provide a rational justification. If you’ve never methodically considered the quality of your coding style, there’s likely plenty of opportunity for improvement. Those who write clean code have concrete activities, patterns and techniques they use to keep their code clean.
4. Maintenance¶
Writing code is relatively easy, reading is hard. This is why so many developers prefer to rewrite rather than do the hard work of reading and comprehending existing code. By writing code that is readable, you are optimizing for the 90% of the time we are reading code, rather than the 10% of the time you are writing it. This is a significantly more cost-effective strategy than the alternative strategy of writing code as quickly as possible without concern for the readability of the code. Also, it makes it almost impossible to say “Oh, this code is not mine, it is Juan’s one.” With clean code you won’t need to blame others for the poor quality of the code, clean code is a standard, a foundation for everyone to work on. So, at the end of the day, by creating code that is maintainable, you are optimizing for the 70% of the time and cost of maintaining code rather than the 30% of the time and cost of creating code.
5. Easy to Test¶
By building clean code, automated testing of that code is encouraged. By automated testing I mean Test-Driven Development- most effective way to improve the quality of the code, improve the long-term velocity of a team, and reduce the number of software defects. All of these factors contribute heavily to the overall ROI of the software.
6. Simplicity¶
Keep your code as simple and readable as possible. Don’t over-complicate problems, which is a common issue among software developers. By keeping it simple you can produce higher quality code, solve problems faster and work better in groups. In Apiumhub, we love KISS principle; keep it simple, stupid, as well as DRY one, which means don’t repeat yourself. It allows software developers to avoid duplication and allows produce much cleaner code compared to the programmer who uses unnecessary repetition. And don’t add extra features because you might need it in the future. Never do that. It’s a useless waste of time and money. And it’s actually harmful. When you over-complicate the code by adding extra features, you are making the code harder to read, understand, maintain, and test. By doing this, you’re creating bugs into your code. And you don’t know the future, and nine out of ten times your assumption will be wrong. Even if you were right that a feature would be necessary later, it might only be needed two years from now, and by then, you might have found a better way to do it. Focus on MVP.
7. Consistency¶
Imagine you go to a shop and there is no consistency over how the items are placed in the area. It would be hard to find products you are searching for. Indentation in the code is much like the arrangement that you need in a supermarket. When your code is indented, it becomes more readable and easier to find what you’re looking for. Especially when you pay attention to names of the items. Having a proper naming convention is extremely important in a code for future edits. Having irrelevant or contradicting names to your pages, variables, functions or arrays will only create troubles for you in the future. Therefore, naming elements on the basis of what they are setting a common rule helps a lot. It creates consistency and easiness to keep working on the project. Actually this leads us to the next step for clean code – creating common language, or a “ubiquitous language,” if you follow the ideas of Domain Driven Design. It seems obvious, but unfortunately many developers skip this part. So, once again I would like to repeat that wording of code is very important because you want your variable names, class names, and package names to make sense no matter who is looking at the code.
8. Cost savings¶
By doing clean code, you gain all those advantages listed above, and all of them lead to cost savings.
conclusion, ¶
I would like to say that don’t be afraid to defend your project, your code. Build quality, working software and take as much time as you need. Many managers defend the schedule and requirements with passion, but that’s their job. It’s your job to defend your clean code with equal passion! Because it helps to increase the overall value, and reduce the overall cost, of both creating and maintaining software. It does this by focusing on creating reader-centric code that is simple, readable, understandable, testable and maintainable.