FROMDEV

22 Point Code Review Checklist & Process Guidelines

Code Review Checklist

Code review is a very important process in software development life-cycle. It is unfortunate to realize that its also frequently ignored. A proper code review plays really significant role in quality of a software. 

There are many tools available to check for common coding mistakes, however a peer code review can not be avoided by use of any tool. 

A well defined code review process is essential to make developers life painless. Below is a checklist that you can use to establish a code review process in your organization.

Automate

Automation of mundane tasks is absolutely necessary to eliminate undesired efforts from developers. Automation play key role in driving effectiveness of code review process. There are multiple opportunity for automation in a development process.  

Code Compiles

Compilation of a source code is absolutely mandatory. A developer does not need to review the source code that does not compile.  

Unit Tests

A developer must have unit tests for all code changes. Its a peer code review best practice to also review unit tests and ensure all scenarios are covered. 

  • Must have pre-requisite for starting code review.
  • Use code coverage tools to ensure completeness of tests.
  • Continuous Integration

    Use of continuos integration tools is key in early identification of code quality issues. Any poor quality code should be immediately visible and be resolved. This avoids backlog of minor issues that never gets attention in future.    

  • Use  continuous integration tools like Jenkins.
  • Peer Code Review Best Practices

    Some of these peer code review best practices are already achieved during agile code review and pair programming. Peer reviews in software help reduce late identification and resolution of bugs. Below mentioned practices will help you drive effectiveness in code review.

    Code Is Functional

    A peer code reviewer need to ensure the code is functional and performs the expected job. This may involve sitting with the developer and doing a test run and observing results.

    Code Is Unit Testable

    A peer code reviewer need to ensure the code has sufficient and required unit tests. Sometimes this may be difficult since the code is not unit testable. Necessary code refactoring need to performed to ensure code can be unit tested.

    Code Is Easy To Debug

    A peer code reviewer need to ensure the code is easy to debug in non developer environment. This may relate to few things 

    Code Documentation

    Writing code comments is helpful however not always necessary. Sometimes the code is not self explanatory, or does something un-usual. It needs to be well documented.

    Code Indentation And Readability

    All developers in a team needs to use common formatting tool with same formatting styles to avoid version control conflicts and difficulty in reading file changes. There is no right or wrong way to format code, however make sure the team uses the same formatting.

    Exception Handling

    Exception handling code is often ignored in critical timelines. A code reviewer must ensure that sufficient exception handling is done in code. Unit test cases should also be addd to check for all exception scenarios. Some common exception scenarios are

    Logging Key Attributes For Debugging

    Debugging information is important to support and maintain applications. Logging required key attributes makes the job of dev ops and support team easy. Developer and Code reviewer needs to ensure that all key attributes are being logged.

    Eliminate Unwanted Code And Libraries If Not Used

    Its common habit of developers to not remove unused code from a file. This is mainly since they think it may be required in future. Some developers tend to comment it so it can be used later. This makes the code unreadable. The code reviewer must make sure that all such code is removed. Developers can always go back to a previous version of code in version control. However, in my observation, a commented code is almost always not reused.

    Handling NULL And Empty Object Scenarios

    Not handling NULL and Empty objects causes many production related problems. A code reviewer must be explicitly watching for these issues.  Unit test cases should also be addd to check for all NULL and Empty object scenarios.

    Sticking To Coding Standards

    A software needs to follow consistent coding practices. There are coding standards available in almost any programming language. Stick to the standard coding practices to ensure everyone speaks the same language. It makes it easier for a new developer to start understanding the code faster.

    Avoid Hard Coding – Prefer Configuration

    Many configurations are often hard coded by developers inside the compiled code and makes it difficult to change the behavior of software. For example an optional feature should have a configuration that can enable or disable a feature. I code reviewer my look for such opportunities to ensure configuration is preferred over hard coding.

    Code Performance

    Performance of the code is important, however difficult to measure depending on type of software. Its important that a code reviewer looks at the performance of a code in various aspects. 

    Scalability

    Scalability of the code may be a important concern, depending on your requirements.  Its important that a code reviewer looks at the scalability of a code in various aspects. 

    Code Security Review

    This is most difficult step in code review since not many people know how to write secure code. Some common guidelines are listed below for a secure code

    Releasing Resources

    Releasing resources in a busy application is really important step that is often missed out by hasty developers. Ensure all important and shared resources are being released by each code block. Following scenario must be covered

    Encourage Code Reusability

    Copy/Paste is developers best friend.  Many lines of code is duplicated by simply doing a copy paste. This seems to solve problem in short term however creates maintenance issues in long run. Any copy/paste candidate in code must be refactored to be re-usable. It needs to be done carefully since many other code blocks may be calling it already.

    Concurrency, Thread Safety And Deadlock Related Issues Are Considered

    Most of the developers are not writing multi threading code and concurrent applications. Therefore these aspects are often ignored by developers. You must pay careful attention to your code block and understand its behavior when multiple thread will try to access it at same time. Ensure all shared variables are minimized and handling concurrency of multiple threads is not leading to a potential deadlock situation.

    Use Of Design Patterns When Required

    It is not easy to spot a design pattern in a bad code, however an experience programmer can easily suggest a better approach provided enough knowledge of the software. 
    Try to spot common design pattern application on existing code and see how you can improve it. Use of design pattern improves maintainability of source code.

    Summary

    Hope you will find these code review best practices useful. Try to implement it in your everyday development process and observe a guaranteed improvement in the software quality.

    Exit mobile version