On 06/11/13 02:19, Steven D'Aprano wrote:

Yes! The first thing to do is get rid of the unnecessary class. This is
not Java where you have to write classes for everything. From the sample
code that you show below, using OOP here accomplishes nothing except
making the code more complicated and less efficient.

If that's true I agree, but I assumed that since he called it filedict he was intending to make it into a filedict and only showed us the methods that he was asking about (which is what we encourage people
to do...)

class *needs* only behaviour -- the class doesn't need to store either
self.fname nor self.parsed_file, since they are both only used once.

Its hard to say that if the OP does intend to implement a filedict. If the dict is being written back to a file at some point it may need to store the original name - or to mangle it and store the new target name...

"Filedict" is neither a file nor a dict -- it doesn't inherit from file,
or behave like a file; it doesn't inherit from dict, or behave like a
dict. It is, in fact, *not* a file/dict at all.

Again, I assumed (possibly wrongly!) that tyhe intent ws to produce a filedict (which sounds like it might be based on a shelve?).


What you really have is something with a nasty compound name:

FileParserAndDictProcessor

But if you are right and I'm wrong about the intent then I agree!

When your classes have nasty compound names like this, it is a very
strong clue that the class doesn't actually represent a thing and
probably shouldn't exist....

For a very entertaining -- although quite long -- look at this issue,
have a read of this:

http://steve-yegge.blogspot.com.au/2006/03/execution-in-kingdom-of-nouns.html

I agreed with about half of this, but strongly disagreed with some of it too. Much of it is Java focused and so I understand his frustrations, but his comments are a bit to generalised IMHO.

In particular his list of verbs before nouns is completely misguided since he uses the imperative case which in English has an implied subject - the person carrying out the command. This his examples should all be prefixed by a noun to become, for example:

YOU get the garbage bag from under the sink
YOU carry it out to the garage
YOU dump it in the garbage can

And the equivalent OOP constructs become

Person.get(item, location)
Person,put(item, location)
Person.dump(item,receptacle)

In fact in most English sentences the noun does come before the verb.
<Subject Verb Object> is the most common structure.

The bit of his rant thats valid, and often seen in Java, is that the verbs get applied to the object of the sentence rather than the
subject. Thus we see

Garbage.get(location)

Which I agree makes no sense.


--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to