WHAT IS CODE QUALITY, HOW TO MEASURE AND IMPROVE IT?
Tags: cyclomaticcomplexity, complexitymeasures, codequality, codegrip
Published: 2020-02-12 07:35:37

There are numerous ways to implement code, as there are developers to implement it. While this is one of the many reasons making the profession of a programmer fun, it also means there are varied opinions about what makes good, or high-quality, code. What one individual values as top quality code may be drastically different from what another individual values.

SO WHAT EXACTLY IS CODE QUALITY?

In his book “Juran’s Quality Control Handbook”, J. M Juran has concisely defined two widely accepted aspects of code quality:

1.	Quality code consists of those features that cater to the need of customers and subsequently provide product satisfaction.
The first and foremost measure of quality to consider is whether the code meets the requirements that caused it to be written. A code beautifully written, but failing to accomplish the desired outcome, can be said to have low quality. In short, it must actually meet the customer’s needs. However, focusing on this bare minimum of achieving quality code begins to cause problems. In today’s fast-paced technological landscape, requirements change rapidly and thus, software needs to change too to meet these requirements.  

2.	Quality code is free from deficiencies.
This second aspect refers to is the product’s freedom from deficiencies. In the software context, a deficiency is a very broad concept. We can take the “freedom from deficiencies” as referring to the non-functional attributes required in code. Some of these non-functional attributes are:

•	Clarity – Easy to read and legible to anyone who has not written the code themselves.
•	Maintainability – An easy to understand context and not being over-complicated makes it easier to make changes in the code if required. 
•	Documentation – While well-written code explains itself, it is always recommended to add comments to explain the role it plays and its functions.
•	Refactored – The formatting needs to be consistent and follow relevant coding conventions.
•	Well-tested – The less amount of bugs a software has, the higher its quality is. Rigorous testing helps filter out such discrepancies.
•	Efficiency – High-quality code uses the resources available to it optimally to perform the desired action.   

WHY IS CODE QUALITY IMPORTANT?

So far, we have discussed what code quality is and what aspects need to be ensured to write code that is of high quality, which brings us to, why is it important? Some of the significant reasons why maintaining a high quality for your code is important are:

•	It makes your software robust
•	Increases readability and eases editing
•	Makes your program sustainable
•	Promotes easy transferability
•	Decreases technical debt 

The quality of code is important as it ends up defining the overall software quality. Quality ultimately impacts the security, safety, and reliability of your codebase. 

High-quality code is imperative for development teams today, and especially important for teams developing systems that are safety-critical.
Related post: [Why is code quality important?](https://www.codegrip.tech/productivity/why-is-code-quality-important/) 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/y08sdkwfcmbu3qbr4nfk.png) 

HOW TO MEASURE AND IMPROVE CODE QUALITY

Measuring code quality can help you understand what steps need to be taken to improve your code quality. There are numerous metrics you can use to quantify the quality of your code. Some of the non-functional metrics have been discussed earlier. Additionally, you can use a few quantitative measures to reveal the quality of your code:

•	Weighted Micro Function Points (WMFP)
WMFP is a modern software sizing algorithm that takes your source code and breaks it down into several micro functions, subsequently producing several complexity metrics for each of the micro functions. It later interpolates the results into a single score. The metrics used to determine a WMFP score include comments, code structure, arithmetic calculations, and flow control path. 

•	Halstead Complexity Measures
The Halstead Complexity Measures date back to the year 1977. These measures essentially include metrics like program vocabulary, program length, volume, estimated bugs, etc. The primary aim is to measure the computational complexity, as the more complex a code is, the harder it is to maintain and the lower its quality.
 
•	Cyclomatic Complexity
This metric measures the structural complexity of your program. This is done by counting the linearly independent paths through the source code. A higher cyclomatic complexity suggests a higher probability of encountering defects. 

After measuring and articulating your code quality, you can take steps to improve it. Some of the ways you can improve the quality of your code are:

•	Use relevant coding standards
Using a coding standard is highly recommended and one of the best ways to achieve high-quality code. Using a coding standard ensures consistency amongst colleagues and increases the reliability of the codebase. The best way to start using a coding standard is to train your developers and help them comply with it. A static code analyzer can help you do this.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/4jmzy6s9xn1rdizh30oi.png)
 
  
•	Analyze the code before a code review
It is important and best to analyze code when it’s written and before the code review. This helps save a lot of time and makes the process of resolving errors cheaper and easier.
  
•	Follow code review best practices
[Code review](https://www.codegrip.tech/productivity/best-practices-for-reviewing-code/)  is one of the top three ways to ensure code quality according to the State of Code Quality 2016 Survey. When code review is done thoroughly and well, it improves the code quality significantly. 

•	Refactor code when necessary
Refactoring old legacy code can help you significantly decrease its complexity and clean up the codebase in the process. 

CONCLUSION

To sum it up, a well-written code has a visible impact on the quality of your software. It is imperative to understand and measure the quality of your software and see if it is improving as a result of higher code quality.