[an error occurred while processing this directive]

Code Reviews can be very useful ways of improving code quality and indeed reducing overall effort. However they can also be fraught, with the participants becoming too involved in matters of personal style rather than objective issues. This is a checklist to help code reviewers work in an objective and fair way.

Aims

Code Reviews aim to:

Secondary benefits can include:

The Review meeting

Attendees might include the following roles:

  • Author
  • Code Reviewer
  • Moderator (chairman, quality process manager - sets up meeting, ensures it's followed up)
  • User Reviewer (code user, not end user)
  • Maintainer Reviewer (who will inherit the system)

    Project managers should not (normally) be involved. The review should not be a performance review (this makes it harder for staff to present openly), and should be limited to technical staff.

    The author's material is distributed before the meeting to the reviewer, user and maintainer. The material should be complete; it is difficult to establish what might be wrong later with unfinished material.

    The meeting itself should be an hour maximum. The author might present or the reviewer(s) might walk through. Once an error is detected it should be noted, including some idea of the consequences of not making the change, and the severity of the change required, such as:

    Solutions should normally be left to the developer, as discussing them in meetings can rapidly become extended arguments and are not normally interesting to most of the attendees. Moderators will need to enforce this, as well as arguments about style. Either an error exists or it does not, and the meeting must be limited to detecting them.

    After the meeting the moderator should summarise the meeting (list of attendees etc) and the list of errors and whether corrections will need to be reviewed.

    Checklist

    On features

    On Code

    On Comments (both javadoc and implementation comments):

    On errors and exceptions

    On Testing

    While this page is meant for code reviews, similar practices are suitable for document reviews (such as functional requirements, user manuals, etc)