python - Some advice on the style of different ways to limit line length to comply with PEP8 -


i updating code comply pep8 maximum line length.

i have 2 questions on people think better style. first init of class (or function definition matter). people split arguments of function definition if line long this:

def __init__(self,              title,              url,               teaser,              parsedate,              updatedate,              redis,              id=none): 

or considered better split thát part second line otherwise long this:

def __init__(self, title, url, teaser, parsedate, updatedate, redis,              id=none): 

and secondly: in long if statements, don't find splitting of conditions add mucht clarity of code this:

    if self.redis.exists('article:%s' % self.url)\             , self.redis.hexists('article:%s' % self.url, 'id'):         self.id = self.redis.hget('article:%s' % self.url, 'id')     else:         self.id = self.redis.incr('articleid') 

if written below, line definatily long, think here clearer let value of self.id depend on condition. in previous example, less clear me condition ends , contents of if block starts.

    if self.redis.exists('article:%s' % self.url) , self.redis.hexists('article:%s' % self.url, 'id'):         self.id = self.redis.hget('article:%s' % self.url, 'id')     else:         self.id = self.redis.incr('articleid') 

what python pep8 guidelines point of view considered better code, since guidelines says should not follow guideline:

"when applying guideline make code less readable, used reading code follows pep."

any advice highly appreciated.

for __init__ function, go somewhere in middle , try put parameters on each line, finding logical place split line if possible:

def __init__(self, title, url, teaser,               parsedate, updatedate, redis,              id=none): 

you might consider if there way refactor code avoid many arguments single method, or use **kwargs, accept intended parameters , explicitly reject extras.

for conditional, take advantage of implicit line breaking allowed inside parentheses (which how can split parameters function across multiple lines). technique shown in pep 8 itself.

if (self.redis.exists('article:%s' % self.url) ,         self.redis.hexists('article:%s' % self.url, 'id'):     self.id = self.redis.hget('article:%s' % self.url, 'id') else:     self.id = self.redis.incr('articled') 

in case, since construct key 3 separate times, might factor out temporary variable first.

key = 'article:%s' % (self.url,) if (self.redis.exists(key) ,         self.redis.hexists(key, 'id')):     self.id = self.redis.hget(key, 'id') else:     self.id = self.redis.incr('articled') 

Comments

Popular posts from this blog

database - VFP Grid + SQL server 2008 - grid not showing correctly -

jquery - Set jPicker field to empty value -

.htaccess - htaccess convert request to clean url and add slash at the end of the url -