On 11/30/2011 07:49 PM, Steven D'Aprano wrote:
Norman Khine wrote:
hello,
is there a better way to organise this code or optimise it.
http://pastie.org/2944797
Is that a question? Because I get a syntax error in my brain when I
parse it without the question mark. <wink>
Sorry to pick on you, but it astonishes me when people don't bother
with basic English syntax, and yet try writing code where syntax is
*much* more important. If they can't be bothered with writing correct
English, that sends all the wrong signals about the quality of their
code.
You should write as if you were coding, otherwise people will assume
you code like you write.
Laziness is one of the cardinal virtues of the programmer, but it has
to be the right sort of laziness. "Don't reinvent the wheel, use an
existing library" is good laziness. "Leave out required syntax
elements and hope someone else will fix them" is not.
Before worrying about optimising the code, how about checking whether
it works?
(1) What is CSVFile? It appears to be a class, because you inherit
from it, but it isn't defined anywhere and isn't a builtin. So your
code fails on the very first line.
(2) You have a class WorldSchema with no methods, and a top-level
function get_world that *looks* like a method because it has an
argument "self", but isn't. The indentation is wrong. See what I mean
about syntax? Syntax is important. So is get_world a wrongly indented
method, or a poorly written function?
(3) Since get_world doesn't use "self" at all, perhaps it should be a
top-level function of no arguments? Or perhaps a static method of
WorldSchema?
(4) You have a class called "getCountries", which seems to be a poor
name for a class. In general, classes should be *things*, not
*actions*. Also I recommend that you follow PEP 8 for naming
conventions. (Google "PEP 8" if you don't know what I mean, and
remember, it isn't compulsory, but it is recommended.) A better name
might be CountryGetter.
(5) The use of classes appears on first reading to be a Java-ism. In
Java, everything must be a class Just Because The Powers Who Be Said
So. In Python, we are allowed, and encouraged, to mix classes and
functions. Use the right tool for the job. But without any idea of the
broader context, I have no idea if classes are appropriate or not.
(6) getCountries has a method called get_options. Based on the name, a
reasonable reader would assume it returns some sort of list or
dictionary of options, right? But according to the documentation, it
actually returns a JSON "ser", whatever that is. Server? Service?
Serialization (of what)? Something else?
(7) Other problems: Enumerate, MSG and iana_root_zone are used but
not defined anywhere. Documentation is lacking, so I don't understand
what the code is intended to do. Another class with a poor name,
"getRegions". There may be others, but I stopped reading around this
point.
I stopped looking at his pastie once the background turned black. I'd
have had to copy it elsewhere to even read it.
--
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor