how to reduce bugs due to incorrect indentation

Asaf Las roegltd at gmail.com
Thu Feb 6 00:23:29 EST 2014


On Thursday, February 6, 2014 5:02:09 AM UTC+2, msu... at gmail.com wrote:
> I had a bug in a Python script recently. The code in question was 
> something along the lines of:
> if a == 1:
>     x = y
> else:
>     x = z
> y = z + y
> z = z + 1
> 
> While editing this file I accidentally pushed TAB on the line with 
> 'y = z + y'.
> My changes were elsewhere and I did not notice the above one line 
> change when I looked at the diffs before commit. I should have noticed 
> it...
> 
> It was rare that a was 1 and therefore the problem did not show up 
> for a while. (I know I should have had tests exercising all cases...)
> When the bug showed up, it was kind of difficult to remember what 
> was the original intent. Fortunately, looking at old versions allowed 
> me to find the problem commit and the bug.
> Any suggestion on how to avoid this type of error in the future?
> Thanks!

I see. 

The only solution to mimic C style curly brackets comes to my mind is 
to use hash to mark start and stop of your block as:

if a == 1:#
    x = y
#
else:#
    x = z
#
y = z + y
z = z + 1

and PEP ... Nulla poena sine lege :-)

/Asaf



More information about the Python-list mailing list