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