Docstrings considered too complicated

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Feb 26 22:15:47 EST 2010


On Fri, 26 Feb 2010 18:47:26 -0600, John Bokma wrote:

> Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> writes:
> 
>> On Fri, 26 Feb 2010 09:09:36 -0600, Tim Daneliuk wrote:
>>
>>> Reminiscent of:
>>> 
>>> mov  AX,BX               ; Move the contents of BX into AX
>>
>>
>> That's a *good* comment, because without it most English-speaking
>> people would assume you were moving the contents of AX into BX.
> 
> Eh? It's a bad comment, it's of the same quality as:
> 
>> x = x + 1  # Add one to x.
> 
> You think the former is good because (I guess) you are not familiar with
> the language. The same reason why beginners comment their code like in
> your example.

Well, in the second example, x+1 could not possibly be anything other 
than adding one to x in any language, programming or human: using "+" for 
addition is close enough to universal these days. Unless x is some fancy 
object that plays operator overloading tricks, then what else could x+1 
be?

On the other hand, mv AX,BX is not only ambiguous but in the example 
given the move occurs in the counter-intuitive direction, at least for 
English-speakers and probably most speakers of European languages. So 
even an experienced coder might like the reminder that this specific 
assembly language moves things backwards compared to his intuition, or 
compared to the way the rest of the language does things.

Admittedly an experienced coder might be so used to that syntax that he 
no longer needs the comment, in which case he might find it unnecessary. 
But comments aren't written for the benefit of people who find it 
obvious. They're written for everyone else. ANY comment could be 
dismissed as unnecessary for somebody who is so familiar with the 
language and code in question that it is obvious what it is doing.

Also, some assemblies perform the move in different directions according 
to the arguments. So you might have:

mv AX,BX  ; move contents of BX into AX
mv @CX,DX ; move contents of @CX into DX

Horrible, yes, but apparently some assembly languages did something like 
that.


-- 
Steven



More information about the Python-list mailing list