If you’re going to reformat source code, please don’t do anything else at the same time

Raymond Chen


I spend a good amount of my time doing source code archaeology,
and one thing that really muddles the historical record is
people who start with a small source code change which turns
into large-scale source code reformatting.

I don’t care how you format your source code.
It’s your source code.
And your team might decide to change styles at some point.
For example, your original style guide may have been designed
for the classic version of the C language,
and you want to switch to a style guide
designed for C++ and its new // single-line comments.
Your new style guide may choose to use spaces instead of tabs
for indentation,
or it may dictate that opening braces go on the next line
rather than hanging out at the end of the previous line,
or you may have a new convention for names of member variables.
Maybe your XML style guidelines changed from using

<element attribute1=”value1″ attribute2=”value2″ />



Whatever your changes are, go nuts.
All I ask is that you restrict them to
“layout-only” check-ins.
In other words, if you want to do some source code reformatting
and change some code,
please split it up into two check-ins,
one that does the reformatting and the other that changes the code.

Otherwise, I end up staring at a diff of 1500 changed lines of source code,

1498 of which are just reformatting
and 2 of which actually changed something.
Finding those two lines is not fun.

And the next time somebody is asked to do some code archaeology,
say to determine exactly when a particular change in behavior occurred,
or to give an assessment of how risky it would be to port a change,
the person who is invited to undertake the investigation may not be me.
It may very well be you.

Raymond Chen
Raymond Chen

Follow Raymond