Created
November 30, 2023 19:44
-
-
Save remzmike/941ddf550507a0e5a1cd533b2aa0dd79 to your computer and use it in GitHub Desktop.
Guido van Rossum on fluent interfaces
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Python-Dev] sort() return value | |
Guido van Rossum guido at python.org | |
Fri Oct 17 10:56:38 EDT 2003 | |
Previous message: [Python-Dev] Trashing recursive objects comparison? | |
Next message: [Python-Dev] accumulator display syntax | |
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] | |
I'd like to explain once more why I'm so adamant that sort() shouldn't | |
return 'self'. | |
This comes from a coding style (popular in various other languages, I | |
believe especially Lisp revels in it) where a series of side effects | |
on a single object can be chained like this: | |
x.compress().chop(y).sort(z) | |
which would be the same as | |
x.compress() | |
x.chop(y) | |
x.sort(z) | |
I find the chaining form a threat to readability; it requires that the | |
reader must be intimately familiar with each of the methods. The | |
second form makes it clear that each of these calls acts on the same | |
object, and so even if you don't know the class and its methods very | |
well, you can understand that the second and third call are applied to | |
x (and that all calls are made for their side-effects), and not to | |
something else. | |
I'd like to reserve chaining for operations that return new values, | |
like string processing operations: | |
y = x.rstrip("\n").split(":").lower() | |
There are a few standard library modules that encourage chaining of | |
side-effect calls (pstat comes to mind). There shouldn't be any new | |
ones; pstat slipped through my filter when it was weak. | |
--Guido van Rossum (home page: http://www.python.org/~guido/) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment