Code review principles

Sara Verdi
Sara Verdi
Graphite software engineer

Code review best practices emphasize code quality, consistency, and maintainability by following standards like clarity, simplicity, and proper documentation. This guide will explore the key principles of the code review process and show you how to implement them effectively.

The principles of code review are guidelines that help teams conduct reviews effectively. These principles aim to create a constructive environment for feedback while ensuring the quality and maintainability of the codebase.

It's essential to separate the code from the individual who wrote it. This principle promotes a culture where feedback is seen as an opportunity for improvement rather than a personal critique. For example, if a reviewer notices a poorly structured function, they should provide suggestions for improvement without implying that the original author is inadequate. Instead of saying, "You should know better than this," a better approach would be, "This function could be refactored for better readability."

Reviews should always aim to be constructive. Provide actionable feedback that encourages improvement. Instead of simply pointing out what is wrong, offer solutions or alternatives. For example, if a reviewer sees a repeated block of code, they might say, "I've noticed this block of code is repeated. It could be simplified into a utility function to enhance maintainability. What do you think about extracting it?"

Smaller, focused pull requests (PRs) are easier to review than large, complex ones. The principle of reviewing small changes promotes better understanding and quicker feedback. Aim for PRs that encapsulate a single feature or bug fix. For example, instead of submitting a PR that addresses multiple features, consider breaking it down into separate PRs, like so:

  • PR 1: fix(auth): resolve user authentication issue
  • PR 2: feat(profile): add user profile page
  • PR 3: fix(api): improve error handling in the API

This approach allows reviewers to concentrate on one aspect of the code at a time, leading to more thorough reviews.

Establishing clear criteria for code review approvals helps streamline the process and set expectations for all team members. Criteria can include:

  • Code functionality: Does the code meet the intended functionality?
  • Code style: Does the code adhere to the team's coding standards?
  • Test coverage: Are there adequate unit tests to verify the new changes?

By defining these criteria upfront, team members know what to look for during reviews, making the process more efficient. For example, a checklist for reviewers might include:

  • Does the code pass all unit tests?
  • Is there sufficient documentation for new features?
  • Are error cases handled appropriately?

Code reviews should be a collaborative process, and encouraging discussion among team members allows for diverse perspectives and ideas. For instance, if a reviewer suggests an alternative approach, it opens the floor for further discussion. This kind of dialogue not only enhances the code but also strengthens team relationships.

Too many reviewers can lead to confusion and conflicting feedback. Limiting the number of reviewers (ideally two to three) ensures focused feedback and avoids overwhelming the author. Establish roles among reviewers, such as:

  • Primary reviewer: Focuses on functionality and design.
  • Secondary reviewer: Checks code style and best practices.

This structure helps streamline the review process and allows for targeted feedback without duplication.

The ultimate goal of code review is to enhance code quality. Reviewers should prioritize aspects like readability, maintainability, and performance.

Code reviews are an opportunity for learning. Encourage team members to ask questions and provide insights. A review could look like this:

"I've noticed you used a specific library here. Can you explain why you chose that over another option? It might help others understand the decision."

While manual reviews are essential, leveraging tools for automation can enhance efficiency. Tools like linters and static code analysis can catch common issues before the code even reaches the review stage. You can also incorporate AI-powered code review tools like Graphite Reviewer to allow authors to get instant feedback on their pull requests. This helps reviewers focus on the most critical aspects of the code and cut down on review cycles.

By adhering to these foundational principles, teams can cultivate a more collaborative environment that improves both code quality and standards.

Git inspired
Graphite's CLI and VS Code extension make working with Git effortless.
Learn more

Graphite
Git stacked on GitHub

Stacked pull requests are easier to read, easier to write, and easier to manage.
Teams that stack ship better software, faster.

Or install our CLI.
Product Screenshot 1
Product Screenshot 2