Why is Code Review importantIn a development life cycle, Code Reviews play an essential role to gauge the quality of a product.
There are multifold benefits of having a stringent code review in place:
- Finding defects at an earlier stage helps us in avoiding complexities post deployment.
- Complying with coding standards helps us to keep our Technical Debt in check.§
But how do we ensure that our review process is efficient? Apart from verifying the functionality, what are the other things a code reviewer needs to look for?
A developer might have made the correct functional changes, but he/she might have violated some fundamental design principles/coding standards.
This makes the role of a Code Reviewer critical. How do we ‘smell’ the various issues with the code?
What is a Code Smell
In simple terms, we can define it as bad practices or design flaws, which might require attention, either immediately or at a later point of time.
Building up Technical Debt is always a red flag and the earlier we identify and fix issues, the better it is.
Some of the common code smells are:
Long Method | Keeping our methods short and crisp, makes our code easier to understand and maintain. |
Duplicate Code | CTRL-C and CTRL-V can be our enemy sometimes. If there is a problem in the original code, we basically end up propagating it across our application. |
Large Class | Ideally a class should have one responsibility. If we need to add a new functionality, we can rather create a new class than to overload the existing class. |
Dead Code | In the world of Source Control systems, we don’t need the code which is not being used. |
Lack of Unit Tests | Having good code coverage gives us confidence that we haven’t broken any existing functionality. |
How to identify these Code Smells
In Visual Studio, we can identify Code Smells and take decisions to apply the required refactoring. And here comes ‘Code Metrics’ to our rescue.
Code Metrics is a tool which analyzes our project, measures the complexity and provides us better insight into the code.
The Code Metrics Results window is a one stop place which helps us understand how maintainable our code is.
To generate code metrics for our project, we can go to Analyze Menu, then Calculate Code Metrics
What does the Code Metrics Results show
Be it a developer or a reviewer, Code Metrics helps us identify the places in the code where rework is necessary. It provides us with 5 metrics:
- Maintainability Index: It indicates how easy it should be to understand & modify the code, in a scale of 0 to 100. High value means better maintainability.
- Cyclomatic Complexity: It indicates the number of possible routes through a unit of code. Less value means better maintainability.
- Depth of Inheritance: It indicates the length of inheritance hierarchy in the class. Less value means better maintainability.
- Class Coupling: It indicates the number of dependencies that an item has. Less value means better maintainability.
- Lines of Code: Lesser the lines of code in a method/class, more is the maintainability.
We can filter the code metrics results based on what we want to see. Also we can export the Code Metrics results to excel.
Identify Duplicate Code using Code Clone Analysis
To perform code clone analysis for our project, we can go to Analyze Menu, then Analyze Solution for Code Clones
The Code Clone Analyzer in Visual Studio helps us to search duplicate code in the entire project.
Thus to summarize, we can use Code Metrics to identify code smells or as a double check/safety net to ensure that we are complying with coding standards and not building up our technical debt.