判りやすいやり方が1つは必要だ -- その1つだけなら最高だね

はじめてのにき(2016-03-10) を見て。

Python の Zen の一つ "There should be one - and preferably only one - obvious way to do it." はよく誤解される。

これはもちろん PerlTMTOWTDI 「やり方は1つじゃない」に対するものなのだけど、反対の「やり方は1つが良い」という意味では決して無い。 現実的なプログラミング言語でそんなアホな目標を持ってはいない。訳すなら「判りやすいやり方が1つは必要だ -- その1つだけなら最高だね」で、 preferably~ の部分は補助的なものだ。

例えば conditional expresson x if cond else y は、普通の if/else 文と一時変数を使えば良いので、新しいやり方だ。でも、これがない時代は、一部のエキスパートが cond and x or y というイディオムを使ってしまっていた。このイディオムは知らない人にはトリッキーで読みにくい。

最近だと、 Python 3.6 で "{foo} and {bar}".format(foo=foo, bar=bar)f"{foo} and {bar}" と書けるというのも、変数が多い時に読みにくい、format の引数に **locals() を使うという良くないトリックを使う誘惑が大きいなどといったことを理由にとうとう受け入れられた。

つまりこのZenは、新しいやり方を追加するのは今までのやり方よりも明らかに読みやすく判りやすいなどのメリットがあるときで、ちょっとタイプ数を減らすとか好みの書き方だということではやり方を増やさないということだ。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。