Skip to main content

Code Review - Best Practices

Code review is a great learning and knowledge sharing tool not only for the new members of the team but for the long time company veterans as well. Having a code review process in place dramatically improves the code quality and helps detect bugs in an early stage.

Much of what I wanted to write here has already been captured in this great post form smartbear. However, here are the important bits:

 

Author:

  • Size matters. Keep it under 400 lines.
    • For bigger change, break down the review in meaningful chunks.
  • Provide a detailed context of the change.
    • I prefer commit message and will recommend to follow similar format from Linux project [link]
  • Provide details of tests performed to verify the change.
  • Review your code before publishing and add annotation to help guide the reviewer.

Reviewer:

  • Take it slow but not longer than 60 minutes.
  • Use checklist of what to look for in code review.
    • Example checklist [link]
  • Read the story and understand the tests.
  • Tone in comment matters.
    • Using tags to communicate helps. Example: [minor], [non blocker], [consider], [breaking] etc.
  • Give praise where deserved.
  • Constructive feedback.
  • Provide code samples and links to learn more. 
Happy code reviewing!






Comments

Popular posts from this blog

Creating dynamic email templates using C# and Office Outlook

It is quite common for many applications to send automated email notifications. Couple of months ago, I have worked on improving our old email template format to make it more user friendly.
In this tutorial I will walk you though regarding how I took advantage of Microsoft Outlook to quickly generate custom email template and later using the html template for building an automated custom email application using C#.

Steps:Creating Templates: Using the rich text editor support  in Outlook create a nicely formatted email. Use placeholder text for the values you like to change dynamically based on your task completion status.

To keep this tutorial simple, I have created a  simple table with placeholder text inside the third bracket [place holder text]. However, you can use anything supported by outlook editor.Getting HTML code: Send the created email to your own address. After that, open the sent email and right click to view source. It will display the HTML source of the email body with …

Persian Music - Homayoon - Nemitonam English lyrics

I love this song. I have requested one of my Persian friend to translate it for me and she did really nice job.. I am sure you will love it..
"

"The person who was the only person I had,
was the only refuge of my lonely heart,
Left me alone and went from my side
I am restless form the pain of her separation

I thought she stays with me
sings love song for me
I thought she understand my words
I didn’t know she’s unkind

Though gone, but still
I am full of her love
Her thought is always with me
Wherever I go, she is in front of my eyes, in front of my eyes
I want to stand out
find a way to reduce my pain of her separation
But it is not possible, There is no way
I cannot bear
I cannot bear

The person who was the only person I had,
was the only refuge of my lonely heart,
Left me alone and went from my side
I am restless form the pain of her separation

I thought she stays with me
sings love song for me
I thought she understand my words
I didn’t know she’s unkind

Though gone, but still
I …

Interesting bug - Line endings and Hash Code

I recently came across an interesting bug which emphasize how different line endings format can break your custom equality implementation if you do not carefully consider them.

Context
We have an application that periodically updates the local assets with latest updated resources. In a nutshell, it makes an web api call to get the latest set of metadata and compare them against a locally stored metadata file. If they differs then we update the locally stored metadata file and download new/updated resources.

Bug
For a particular asset, associated metadata file was always getting updated although there were no visible changes detected using the revision history.

Investigation
My obvious suspect was the code responsible for doing the equality check between local metadata and the metadata received from the Web API.

For verification, I setup a conditional break-point which will be hit when the equality returns false. After my debug hit the break-point, I looked into all the properties and fou…