2025-05-30 14:56:54 +09:30
|
|
|
# Code review practices
|
|
|
|
|
|
2025-09-10 22:36:23 +09:30
|
|
|
## Who should review?
|
|
|
|
|
|
|
|
|
|
Code should be reviewed by senior developers who understand the system being
|
|
|
|
|
changed.
|
|
|
|
|
|
|
|
|
|
Code can also be reviewed by more junior developers, as they can learn about the
|
|
|
|
|
system by comprehending the changeset, and they can spot some mistakes or
|
|
|
|
|
problems. However these reviewers should not be able to approve pull requests.
|
|
|
|
|
|
|
|
|
|
## What should be reviewed?
|
|
|
|
|
|
|
|
|
|
- The change should make sense to the reviewer.
|
|
|
|
|
- The code should meet the team's standards for maintainability.
|
|
|
|
|
- The changeset should be limited to the problem being solved by the pull
|
|
|
|
|
request.
|
|
|
|
|
|
2025-05-30 14:56:54 +09:30
|
|
|
## Write actionable comments
|
|
|
|
|
|
|
|
|
|
[Conventional comments](https://conventionalcomments.org/)
|
|
|
|
|
|
|
|
|
|
### Comment structure
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
label [decorators]: subject
|
|
|
|
|
|
|
|
|
|
discussion
|
|
|
|
|
|
|
|
|
|
[suggestion]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Tags for blocking comments
|
|
|
|
|
|
|
|
|
|
- **problem**: Something is wrong with the code that means the PR should not be
|
|
|
|
|
merged.
|
|
|
|
|
- **question (blocking)**: Reviewer needs an explanation about part of the code
|
|
|
|
|
before they understand it well enough to approve.
|
|
|
|
|
- **cleanup**: Some vestigial code needs to be removed before merge.
|
|
|
|
|
- **typo**: Fix a typo.
|
|
|
|
|
|
|
|
|
|
### Non-blocking comments
|
|
|
|
|
|
|
|
|
|
All non-blocking tags need to be decorated as **non-blocking** to make it clear
|
|
|
|
|
to the PR author that the comment isn't blocking approval.
|
|
|
|
|
|
|
|
|
|
- **quibble (non-blocking)**: Something is wrong with the code but it's not
|
|
|
|
|
severe enough to block the PR from being merged.
|
|
|
|
|
- **polish (non-blocking)**: The code quality can be improved.
|
|
|
|
|
- **question (non-blocking)**: Reviewer needs an explanation about part of the
|
|
|
|
|
code before they understand it well enough to approve.
|
|
|
|
|
- **suggestion (non-blocking)**: A change of any kind that improves the
|
|
|
|
|
implementation or code quality, but isn't a blocking problem.
|