Close

2017年11月30日

Flat is better than nested

こんにちは、うらのです。

最近ソフトウェア工房の前のホワイトボードを描いています。作業中の息抜きに描いたものでしたが、せっかくだからということで工房前に設置してみました。思いのほか興味を持って見ている人がいるようなので途中からちらほらITネタを混ぜてみました。今回は今週描いたホワイトボードの解説をしてみようと思います。

Flat is better than nested

図1. ソフトウェア工房前のホワイトボード

“Flat is better than nested”というのは日本語訳で「(ソースコードは)ネストするよりも平坦な方がいい」となります。らき☆すたを観ていたら泉こなたが「貧乳はステータスだ、希少価値だ」と言っていたのを思い出して組み合わせました。

さて、そもそも”Flat is better than nested”は何なのか、という話になりますが、これはPythonというプログラミング言語のPEP20という言語規格で決めているPythonコードを書くための指針、「The Zen of Python」の1文から引用したものです。面白いことにPythonにはインタプリタ(スクリプトに書いても良い)で import this と書いて実行するとSTDIOにThe Zen of Pythonが出力されるイースターエッグがあります。イースターエッグはコナミコマンドみたいなものです。

この規格はPythonコードに限らずプログラミングをする上でも良い指針になります。というわけでこのThe Zen of Pythonの内容をここで紹介します。

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

 

  • 醜いよりも美しい方がいい。
  • 暗黙的よりも明示的な方がいい。
  • 複合的よりも簡易的な方がいい。
  • 複雑奇怪よりは複合的な方がいい。
  • ネストするよりも平坦な方がいい。
  • 密結合しているよりも疎結合な方がいい。
  • 可読性は重要。
  • 特別なケースはルールを破るほど特別ではない。
  • …とはいえ実用性には勝らないこともある。
  • エラーを無視してはいけない。
  • …無視していいと明示されない限りは。
  • 曖昧さを前にした時は、推測したくなる誘惑を捨てよう。
  • それをやるときには明らかに1つの―好ましいたった一つの―やり方があるはずだ。
  • …そのやり方はひと目では明らかでないかも知れないけれど。あなたがオランダ人でなければ。(訳注:Pythonの開発者、Guido van Rossumはオランダ出身です)
  • 後でやるよりは今やったほうがいい。
  • …しばしば今すぐやるよりは後にしたほうが良いこともあるけれど。
  • 説明することが難しかったら、それは悪いアイディアだ。
  • 説明することが簡単だったら、それはきっと良いアイディアだ。
  • 名前空間はとてもいいアイディア―これをもっと使っていこう!

翻訳してみていくつか耳が痛くなる節がありました。特に「後でやるよりは今やったほうがいい」という一節は、夏休みの宿題を後回しにしてしまうタイプの僕にとって厳しい一言です。

ちなみにあまり英語は得意でないので翻訳にはところどころGoogle先生や他サイト様の力を借りました―特に後半は。意訳があったり不正確な部分も多いと思うので、正確な内容を知りたい人は元の英文を読むかググッて他の和訳を探すことをおすすめします。

それでは皆さん良いプログラミングライフを。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA