how to format long if conditions

Roy Smith roy at panix.com
Sat Aug 27 18:39:02 CEST 2011


In article <mailman.457.1314428909.27778.python-list at python.org>,
 Arnaud Delobelle <arnodel at gmail.com> wrote:

> Hi all,
> 
> I'm wondering what advice you have about formatting if statements with
> long conditions (I always format my code to <80 colums)
> [...]
>         if (isinstance(left, PyCompare) and isinstance(right, PyCompare)
>                 and left.complist[-1] is right.complist[0]):
>             py_and = PyCompare(left.complist + right.complist[1:])
>         else:
>             py_and = PyBooleanAnd(left, right)

To tie this into the ongoing, "When should I write a new function?" 
discussion, maybe the right thing here is to refactor all of that mess 
into its own function, so the code looks like:

   if _needs_compare(left, right):
         py_and = PyCompare(left.complist + right.complist[1:])
    else:
         py_and = PyBooleanAnd(left, right)

and then

def _needs_compare(left, right):
   "Decide if we need to call PyCompare"
   return isinstance(left, PyCompare) and \
          isinstance(right, PyCompare) and \
          left.complist[-1] is right.complist[0]

This seems easier to read/understand than what you've got now.  It's an 
even bigger win if this will get called from multiple places.



More information about the Python-list mailing list