From 432ceeacbfbda13edae2e258423c24973f57d87f Mon Sep 17 00:00:00 2001 From: Alec Warner Date: Fri, 12 Jan 2007 19:26:51 +0000 Subject: Add a few pretty basic comments on writing code, particularly things that portage used to do (and still does) that are...a bit out of style ;) svn path=/main/trunk/; revision=5612 --- DEVELOPING | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 DEVELOPING (limited to 'DEVELOPING') diff --git a/DEVELOPING b/DEVELOPING new file mode 100644 index 000000000..0530d99cf --- /dev/null +++ b/DEVELOPING @@ -0,0 +1,71 @@ +Code Guidelines +--------------- +A few code guidelines to try to stick to, please comment of none of these make +sense, they are pretty basic and mostly apply to old code. However for people +who are looking at current code, they make take up bad habits that exist in the +current codebase. + +Strings +------- +Try not to use the functions in the string module, they are deprecated. + +string.join(," ") + +should be replaced with: + +" ".join() + +and: + +string.split(string, delimeter) + +should be replaced with: + +string.split(delimeter) + +Nearly all other methods in string work on string objects and have similar calling +conventions. + +Comparisons +----------- + +if foo == None + +should be replaced with: + +if foo is not None: + +Is not does a reference comparison (address1 = address2 basically) and +the == forces a by value compare (with __eq__()) + +Dict Lookups +------------ + +Try not to use has_key, you can use + +if foo in dict + +instead of if dict.has_key(foo) + +Also don't do stuff like: + +if foo in dict and dict[foo]: + +Generally you can do two things here, if you are messing with defaults.. + +dict.get(foo, some_default) + +will try to retrieve foo from dict, if there is a KeyError, will insert foo +into dict with the value of some_default. This method is preferred in most cases. + +You can also do something like: + +try: + dict[foo] + ...stuff here.. +except KeyError: + print "holy cow we totally expected a keyerror here" + +in most instances however you are only catching the KeyError to set a default, +in which case you should be using dict.get() or telling the user they are missing +a required dict key. -- cgit v1.2.3-1-g7c22