この記事はZen of Pythonシリーズの特別編で、7つ目、8つ目、9つ目の原則である可読性、特殊なケース、実用性に焦点を当てています。
ソフトウェア開発はトレードオフに満ちた分野です。どの選択にも、同じように合理的だが正反対の選択肢があります。メソッドを私物化する?コピー&ペーストを奨励することになります。メソッドを公開する?インターフェイスに早まったコミットメントをすることになります。
ソフトウェア開発者は常に難しい選択をしています。 のすべての原則はある程度トレードオフをカバーしていますが、以下の原則はそれらのトレードオフのいくつかを最も厳しく、冷徹に見ています。
ある意味、この真ん中の原則がPythonの禅の中心です。この原則は効率的なプログラムを書くこととは関係ありません。たいていの場合、堅牢なプログラムを書くことですらありません。書き出すことです。
コードを読むことは、その性質上、コードがシステムに追加された後に起こります。通常は、もっとずっと後になってから起こります。読みやすさを無視するのは最も簡単な選択肢です。新しいコードを追加する理由が何であれ、それが痛みを伴うバグであれ、強く要求された機能であれ、現在に影響を与えます。
もしあなたが可読性を窓から投げ捨て、ただ「問題を解決する」というプレッシャーにさらされているなら、Zen of Pythonは可読性が重要であることを思い出させてくれます。読みやすくするためにコードを書くことは、自分自身にとっても、他の人にとっても、思いやりの一形態です。
このバグは特に厄介だから、まずはシンプルに処理しよう、この機能は特に緊急性が高いから、美学は忘れよう、このケースに関係するドメインルールは特に複雑だから、もっと深くネストしても大丈夫、などなど。
ひとたび型どおりの言い訳に妥協してダムが決壊すれば、原則は失われ、物事は、すべてのプログラマーが自分にとって最良の言い訳を見つけようとするマッドマックスのディストピアへと発展します。
規律にはコミットメントが必要です。ソフトウェア開発者が試されるのは、状況が厳しく、強い誘惑があるときだけです。ルールを破る正当な言い訳は常にあり、だからこそルールを守ることが不可欠なのです。規律とは、例外にノーと言う技術です。それを変える説明はありません。
"敵にぶつかる、跳ねる、ぶつかる、触れることばかり考えていたら、本当の意味で敵を倒すことはできない" -- 宮本武蔵
結局のところ、ソフトウェア開発は実践的な学問です。実際の人々が直面する現実的な問題を解決することを目的としています。実用性は純粋さよりも重要です:何よりもまず、そうでなければなりません。読みやすさ、シンプルさ、美しさだけが考慮されるのであれば、それは本物ではありません。
宮本武蔵が言うように、すべてのコード変更の第一目標はこうあるべきです。問題を解決することを念頭に置く必要があります。問題を解決するという目標なしにZen of Pythonを考えても、これらの原則に沿うことはできません。これもZen of Pythonに内在する矛盾です。




