[Baypiggies] Code/Idea Review (WARNING: SPOILER)

Glen Jarvis glen at glenjarvis.com
Sun Dec 16 01:20:14 CET 2007


The code reviews responses that I have received thus far have been  
good. I like choosing such a small program because we can talk ad- 
infinitum about certain decisions and why we made them. In a group  
like this, I'm certain we'll have plenty of  opinions. So, I'd like  
to open the thread to discuss each of those opinions.

Let's also organize our discussion by thread.

-- Issue #1 --
Importing sys was not necessary. This was left over chaff from when I  
was using sys.exit() while debugging early on. This was something  
that I forgot to clean-up and was a no-no - even in such a small  
program. So, the suggestion to start using pychecker or pylint will  
solve this problem. I really *should* have done this first. Thanks  
for the suggestion!

-- Issue #2 --
The best way to create a translate table (without hardcoding the  
strings). I tried using range, but wasn't using it properly. Neal's  
suggestion was very helpful:

alphabet = ''.join(chr(c) for c in range(ord('a'), ord('z') + 1))

But, what was even MORE helpful was that I have string.lowercase  
built in. Doh! This is why I asked for a review of something so  
simple. Excellent suggestion (and why I sent this email):

     re_map = string.lowercase[2:] + string.lowercase[:2]
     trans_table = string.maketrans(string.lowercase, re_map)

-- Issue #3 -- 
Whether to use a hard-coded string or not. That is, the following  
lines of code are very clear (and a good argument why they should be  
used):

     trans_table = string.maketrans (
        "abcdefghijklmnopqrstuvwxyz",
        "cdefghijklmnopqrstuvwxyzab",
        )

I intentionally avoided the above because I wanted to avoid hard- 
coded literal strings. But, once I saw how easy Dennis' suggestion  
was to read I thought.. Hmmmmmm  I like Dennis' better for code  
readability. And, the alphabet clearly fits within column 79 (even  
with spacing).

So, This issue is probably one that will start discussion. When would  
we use this style and when would we not? This would have been simpler  
for this particular task. But, what over-all 'rule' can one follow?

-- Issue #4 --
Style issues. Aaz. I personally LOVE using white-spaces. In fact, I  
naturally would have added a space before and after parenthesis.  
HOWEVER, PEP-8 is very clear about not doing this. For example:

alpha_list = [ chr(c) for c in range(ord('a'), ord('z')+1) ]
alphabet = ''.join(alpha_list)

Above, I would have included the space between the open bracket ('[')  
and the chr(c). I would also have enclose a space for before the  
closing brace.

HOWEVER, this is what PEP-8 (http://www.python.org/dev/peps/ 
pep-0008/) says about such matters though:

     Avoid extraneous whitespace in the following situations:

     - Immediately inside parentheses, brackets or braces.

       Yes: spam(ham[1], {eggs: 2})
       No:  spam( ham[ 1 ], { eggs: 2 } )


These comments are great. I've been programming for twenty-five years  
(if my Commodore-64 basic counts when I was a young waif)? Most of my  
experience is in C and C++. But, I've only been programming in Python  
for three months. And, the first is not a substitute for the second.  
I love learning and have a lot to do!

I'd like to see more discussion on issue #3 "Hardcoded string or  
not?." The rest are either obvious mistakes of mine or are clearly  
documented.

Warmest Regards,


Glen Jarvis










--
415-680-3964
glen at glenjarvis.com
http://www.glenjarvis.com

"You must be the change you wish to see in the world." -M. Gandhi


On Dec 15, 2007, at 12:16 PM, Aahz wrote:

> On Sat, Dec 15, 2007, Dennis Reinhardt wrote:
>>
>> Seems correct but hard to read and understand what you are doing.   
>> How about
>>
>> trans_table = string.maketrans (
>>     "abcdefghijklmnopqrstuvwxyz",
>>     "cdefghijklmnopqrstuvwxyzab",
>>     )
>>
>> Ooops ... ignore the trailing ","
>
> Actually, *don't* ignore the trailing comma; I highly recommend  
> using one
> with multi-line value lists.  It's not particularly useful here,  
> but it
> saves a lot of work IME in other cases, and it's simply a good  
> habit to
> get into.
> -- 
> Aahz (aahz at pythoncraft.com)           <*>         http:// 
> www.pythoncraft.com/
>
> "Typing is cheap.  Thinking is expensive."  --Roy Smith
> _______________________________________________
> Baypiggies mailing list
> Baypiggies at python.org
> To change your subscription options or unsubscribe:
> http://mail.python.org/mailman/listinfo/baypiggies



More information about the Baypiggies mailing list