wiki:GoogleTwoSpaceIndent

Version 3 (modified by sgk, 13 years ago) (diff)

--

グーグル社内は2文字インデント

うちの社内のコーディング規約は「インデントは2文字、タブは8文字」です。 viでいうところの「set sw=2 ts=8」です。 よく、「なぜ?」って聞かれるんですが、理由なんてありません。 それが効率的とか、優れているとか、それが正当だとかいいません。 社長が当社設立以前からそうしてた。それだけのことです。

社長ってつまりワタクシsgkなんですが、経緯としては…

  • 二昔ほど前C言語に入門したころは「インデントはタブ」でした。
  • BSDとか、ネットニュースで流れてくるソースを読むようになって、「4文字インデント」を知りました。
  • 10年くらい前、C++でがしがしソフトを書いていたころ、「2文字インデント」になりました。

どうもね、ネストが深くなって画面横80文字でいっぱいいっぱいになるのが辛かったように思います。 もしかしたら、ネストがそれだけ深くなったのは、僕のプログラミング能力が低かったからかもしれません。

タブの幅を8文字から変更するという選択をしなかったのは、more(とかless)で表示したときにそのまま見える方がいいとか、印刷の時に余計な心配をしなくて良いとかといったことです。 なんにしても、文字端末で開発する人の言い分ですねえ。 いまどき、統合開発環境で開発する人はそんなこと気にしないのかもしれません。 はあ。

あ。タブが8文字でよかったと思うのは、Pythonを使うようになってから。 Pythonは、タブが8文字と仮定して、タブ文字を空白文字に変換してから動作します。 タブが8文字以外だと、いろいろと不都合があります。

さて、本題。 ひょんなところで、「2文字インデント」の事例を発見しました。 ああ、ウチだけ特殊なわけじゃないんだ…、と。

 ここでPython作者のGuido van Rossum氏が語るには、

And did I mention that I get to spend 50% of my time on Python? No strings attached. Of course I get to spend the other 50% on Python too, but that's in a corporate setting. Fortunately it's easy to separate the two. If it uses two-space indents, it's corporate code; if it uses four-space indents, it's open source. (If it uses tabs, I didn't write it! :-)

とのこと。要約すると、グーグルに入社した彼が「仕事時間の50%はPythonそのもののために使い、残り50%は会社の仕事としてPythonを書いている」とした上で、「それらの仕事で書いたコードを区別するのは簡単だ。2文字インデントなら会社のコードで、4文字インデントならオープンソースだ。」とのこと。ついでに、タブ文字でインデントしていたら、それは自分が書いたコードじゃないよ、と。

というわけで、グーグル社内のコーディング規約は、2文字インデントだそうです。

だからウチがどうだって話じゃないんですけどね。

(2006/11/26 sgk)