Re: [OT]Another n00b: Removing the space in "print 'text', var"



Rick Zantow a écrit :
bruno at modulix <onurb@xxxxxxxxxxx> wrote in
news:43f05016$0$1408$626a54ce@xxxxxxxxxxxx:


HappyHippy wrote:

(snip)
eg.
strName = 'World'
print 'Hello', strName, ', how are you today?'

Already got an anwser, now just a coding-style suggestion: hungarian
notation is *evil*. And even *more* evil with a dynamically-typed
language.


<OT>
Although I agree with you in part (about the horror that is often called "Hungarian notation"),
(snip)

However, that is not how Hungarian notation was meant to be used. Instead, the prefix was to indicate the function of the variable, not its datatype.

I know that. But:
1/ 99% of the developpers using (ms-perverted) hungarian notation ignore this fact
2/ the name itself should be a clear enough indication of the [role, function, intended use] of the variable (<pedantic>well, of the object bound to that name in fact</pedantic>)
3/ see below...
4/ see below...

Thus, ctrXXX would be a counter (according to some hypothetical coding standard).

or a controller, according to some other hypothetical coding standard...

3/ prefixing (instead of suffixing) breaks readability.
compare :
- hit_counter
- hit_controller
- ctrHit

Which one do you find the most readable ? Clearly, prefixing (vs suffixing) puts things in the wrong order. And clearly, a three letters abbrev gives less information than a word.

(snip)

In the HappyHippy example, the 'str' prefix does coincide with Python's indicator of a string class, as it happens.

as it happens... cf /1

It is not clear that it need be more than coincidence, though.

Which, given /1, is enough to confuse the situation. Ho, my, does this prefix means that it's supposed to be a string, or is it mere coïncidence ? And if so, what is this 'str' prefix supposed to mean ?

So much for readability...

A string of bytes need not be of class str, and text need not be contained in a Python str, but the 'str' prefix could easily be attached to anything that indicated strung-
together data under some coding standard or another.
>
Specifically, it wouldn't bother me greatly to discover that strXXX contained a normal Python string at some point and a Unicode string at another -- the function of strXXX would be the same in either case.


4/ Well, I'm afraid that 'strung-together data' is more a type indication than a 'function' indication. And what should I say about byte string or Unicode...


Dealing with the contents of strXXX might be a problem, of course, but that would also be true whenever the datatype of its contents could vary, regardless of its name. In a dynamic language, that variance could easily happen, which appears to be the basis for your "even *more* evil" comment.

Of course.

Appending a pseudotype prefix to an object's name doesn't fix the situation, but it doesn't really make it worse.

Yes it does. How do you like:

strAnswer += 42


A prefix of 'str' should be enough to warn a maintainer not to assume the field is
an accumulator or a function name,

A maintainer should not assume much IMHO. Heck, a function *name* is a string, isn't it ? And BTW, if, following some weird naming convention, the 'str' prefix was used to indicate 'strung-together-data', it could as well be used for any sequence(strung-together-data) - in which case it could be used for an accumulator !-)

and maybe a little more than that, but in any event, in any language, the only sure way to know how an object is being used is to examine its context in the source.

So what's the use of prefixing it's name with distracting information ?

(snip)

Now it could be that I'm misinterpreting your objection to Hungarian notation.

I'm afraid my objections to HN are nothing new.

If so, I'd be interested in hearing what it is.

Then you're done. To summarize:
- it's useless
- it's distracting
- it can be misleading
- it doesn't help readability

According to Python's zen:
- Beautiful is better than ugly.
- Readability counts.
- In the face of ambiguity, refuse the temptation to guess.

Although I don't imagine any of this is actually on topic in the Python group.

oops ! Sorry y'all

</OT>

.



Relevant Pages

  • Re: interactive help on string functions - howto
    ... I don't need to import str and I don't need to prefix rstrip ... >>Make sure you've imported string. ... > If chars is given and not None, ...
    (comp.lang.python)
  • Re: interactive help on string functions - howto
    ... I don't need to import str and I don't need to prefix rstrip ... >>Make sure you've imported string. ... > If chars is given and not None, ...
    (comp.lang.python)
  • Re: [PHP] is_prefix() - checking wheather $A is prefix for $B
    ... whether string $A is a prefix for string $B or not. ... echo '$B does not begin with $A'; ... sure that the the $download_dir is a prefix for $filepath. ... function is_prefix1($prefix, $str) { ...
    (php.general)
  • is_prefix() - checking wheather $A is prefix for $B
    ... whether string $A is a prefix for string $B or not. ... I want to make sure that the realpath() of the requested file is ... sure that the the $download_dir is a prefix for $filepath. ... function is_prefix1($prefix, $str) { ...
    (php.general)
  • Re: Fix quilt merge error in acpi-cpufreq.c
    ... We're arguing against the string "Impact:", ... What we argue against is ugly language. ... That 'x86:' prefix is a summary and a prefix string. ... worthwile way to summarize a given category of information. ...
    (Linux-Kernel)