the annoying, verbose self

jakub silar jakub.silar at volny.cz
Sat Nov 24 05:55:35 EST 2007


BJörn Lindqvist wrote:
> On Nov 22, 2007 2:08 PM, Colin J. Williams <cjw at sympatico.ca> wrote:
> 
>>bearophileHUGS at lycos.com wrote:
>>
>>>Alexy:
>>>
>>>>Sometimes I
>>>>avoid OO just not to deal with its verbosity.  In fact, I try to use
>>>>Ruby anywhere speed is not crucial especially for @ prefix is better-
>>>>looking than self.
>>>
>>>Ruby speed will increase, don't worry, as more people will use it.
>>>
>>>Bye,
>>>bearophile
>>
>>I don't see this as a big deal, but
> 
> 
> The big deal is that "self." occupies important horizontal screen real
> estate. That is, it is usually not self in itself that is problematic,
> but the overflowing lines is. Take this silly vector class for
> example:
> 
> 1    class Vector:
> 2        def __init__(self, x, y, z):
> 3            self.x = x
> 4            self.y = y
> 5            self.z = z
> 6        def abs(self):
> 7            return math.sqrt(self.x * self.x + self.y * self.y +
> self.z * self.z)
> 
> Line 7 is 82 characters long which is, if you care about the
> readability of your code, a very real problem because the line is to
> long. So you break it:
> 
> 7            return math.sqrt(self.x * self.x +
>                               self.y * self.y +
>                               self.z * self.z)
> 
> Better, but definitely not as nice as it would have been with a
> shorter self prefix like you propose. And in my eyes, having to break
> lines like this instantly makes the code much less attractive. There
> is probably not a single language in existance in which wrapping lines
> doesn't make the code uglier.
> 
> I also notice that the lines in your mail are nicely broken at about
> column 45, probably because you are typing on a PDA or similar? In
> those situations, where you require much shorter lines than the
> standard 78 characters, for example when typesetting code examples for
> a book, the problem with line breaks is even worse.
> 
> 
>>suppose that the syntax were
>>expanded so that, in a method, a dot
>>".", as a precursor to an identifier,
>>was treated as "self." is currently treated?
> 
> 
> I like that a lot. This saves 12 characters for the original example
> and removes the need to wrap it.
> 
> 7            return math.sqrt(.x * .x + .y * .y + .z * .z)
> 
> +1 Readability counts, even on small screens.
> 
> 
Below is my coding standard - I'm lazy, even lazy to persuade 
comutinties into strange (imho) language syntax extensions.


     class Vector:
         def __init__(s, x, y, z):
             s.x = x
             s.y = y
             s.z = z
         def abs(s):
             return math.sqrt(s.x * s.x + s.y * s.y + s.z * s.z)

Admit that changing habits may be more difficult then to change a 
language syntax.

Jakub

occasional lamerish Python user



More information about the Python-list mailing list