A Beginner's Guide to Code Review: Building Stronger Collaborations and High-Quality Code

Helitha Rupasinghe - Jul 30 '23 - - Dev Community

Code reviews offer a fantastic opportunity for learning, sharing knowledge, and enhancing your programming skills. In this post, we'll explore some key points to keep in mind when engaging in this critical process.

1. Understand the Code


// Code to calculate the factorial of a number
function factorial(n) {
  if (n === 0 || n === 1) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}

Enter fullscreen mode Exit fullscreen mode

Before diving into the review, take the time to understand the code thoroughly. Familiarize yourself with its purpose, requirements, and expected behavior. Understanding the code's context will enable you to provide more meaningful feedback and suggestions.

2. Functionality


// Code to add two numbers
function add(a, b) {
  // Incorrect implementation, should use + operator instead of - operator
  return a - b;
}

Enter fullscreen mode Exit fullscreen mode

Evaluate the code's functionality against the desired outcomes. Verify if the code meets the specified requirements and performs as expected. Look for logical errors, missing features, or potential performance bottlenecks. Provide constructive feedback to help improve the functionality of the code.

3. Code Formatting


// function with inconsistent formatting
function foo() {
const  x=1;
  let y = 2;
return x+y;
}

/* Code Review Comment:
Please use proper indentation and space after 'const' and before 'return'. */
Enter fullscreen mode Exit fullscreen mode

Consistent and readable code is essential for collaboration and maintainability. Pay attention to code formatting, indentation, and naming conventions. Ensure that the code follows the agreed-upon style guide or coding standards of the project. Consistent formatting improves code readability and reduces the chance of introducing bugs.

4. Consistency


// functions with inconsistent naming conventions
function getUserData() {
  // Code to fetch user data
}

function fetch_user_data() {
  // Code to fetch user data (inconsistent naming)
}

/* Code Review Comment:
Let's stick to one naming convention for functions, either camelCase or snake_case. */

Enter fullscreen mode Exit fullscreen mode

Consistency in coding style, structure, and patterns is key to maintainable code. Identify any deviations from established conventions and discuss them with the developer. Consistency enhances code comprehension, minimizes confusion, and facilitates future enhancements or bug fixes.

5. Simplicity


// Complex code for simple task
function calculateSum(arr) {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 2 === 0) {
      sum += arr[i] * 2;
    } else {
      sum += arr[i];
    }
  }
  return sum;
}

/* Code Review Comment:
The calculateSum function can be simplified using the Array.reduce() method. */

Enter fullscreen mode Exit fullscreen mode

Simplicity is the hallmark of good code. Look for opportunities to simplify complex logic or reduce unnecessary complexity. Encourage developers to write code that is easy to understand, modify, and maintain. Simple code improves code readability, reduces bugs, and enhances collaboration.

6. Unused Code


// Unused variable
function greet(name) {
  const greeting = 'Hello, ' + name;
  // Code logic...
}

/* Code Review Comment:
The 'greeting' variable is unused, please remove it to avoid cluttering the code. */

Enter fullscreen mode Exit fullscreen mode

Identify any unused code during the review. Unused code clutters the codebase and can lead to confusion. Removing unused code improves code readability, reduces complexity, and minimizes the chance of introducing bugs or conflicting logic.

7. Duplicate Code


// Duplicate logic
function calculateArea(radius) {
  return Math.PI * radius * radius;
}

function calculateCircumference(radius) {
  return 2 * Math.PI * radius;
}

/* Code Review Comment:
The calculation of the radius is duplicated in both functions, consider extracting it to a separate function. */

Enter fullscreen mode Exit fullscreen mode

Duplicate code is a common issue that can lead to maintenance challenges. Identify instances of duplicated code and suggest refactoring to reduce redundancy. Extract reusable code into functions or classes to improve code maintainability and reduce the risk of inconsistent changes.

8. Potential Edge Cases


// Code to divide two numbers
function divide(a, b) {
  return a / b;
}

/* Code Review Comment:
Ensure the 'b' value is not zero to avoid division by zero (potential edge case). */

Enter fullscreen mode Exit fullscreen mode

Consider potential edge cases or boundary conditions that the code might encounter. Think about scenarios where the code could fail or produce unexpected results. Identify and discuss these edge cases with the developer to ensure the code handles them correctly. Addressing edge cases improves the overall robustness of the code.

9. Praise Your Peer


// Code to validate if a string is a palindrome
function isPalindrome(str) {
  // Code logic...
  return true;
}

/* Code Review Comment:
Great job with the isPalindrome function! The logic looks good, and the code is easy to understand. */

Enter fullscreen mode Exit fullscreen mode

Code review is not just about finding faults; it's also an opportunity to acknowledge and appreciate your peer's efforts. Highlight areas where the code excels, such as well-structured functions, clear comments, or clever solutions. Offering praise and recognition fosters a positive and collaborative atmosphere within the development team.

Remember, code review is a collaborative process aimed at building better code together.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .