Design principles: no bool arguments

Maarten maarten.sneep at knmi.nl
Thu Aug 25 03:52:38 EDT 2011


On Aug 25, 9:13 am, Steven D'Aprano <steve
+comp.lang.pyt... at pearwood.info> wrote:
> One design principle often mentioned here (with a certain degree of
> disagreement[1]) is the idea that as a general rule, you shouldn't write
> functions that take a bool argument to switch between two slightly
> different behaviours.
>
> This is a principle often championed by the BDFL, Guido van Rossum.
>
> Here's a Javascript-centric article which discusses the same idea, and gives
> it a name: the Boolean Trap.
>
> http://ariya.ofilabs.com/2011/08/hall-of-api-shame-boolean-trap.html
>
> No doubt there are counter arguments as well. The most obvious to me is if
> the flag=True and flag=False functions share a lot of code, it is poor
> practice to implement them as two functions with two copies of almost
> identical code.

A simple one: C and C-like languages only have arguments, not keyword-
parameters. That alone makes a world of difference.

Maarten



More information about the Python-list mailing list