日本語訳がありがたすぎます。日本語訳で疑問に思った箇所だけは英語版で補完‥‥できているかは私の絶望的な英語力ではかなり怪しいorz
やはり、一番目をひく所は例外禁止ですか?
個人的には C++ の例外処理はあんまり好きじゃなくて、C言語チックに解決してしまうこと*1が多いので、C++で例外を使わない理由のひとつとして、「Googleもそうだから」とか言えるのは非常に助かる。Google衣を借りるヌルプログラマ(苦笑)。C++の例外処理からの復帰とメモリ管理のややこしさは異常。
このスタイルガイドを読むときの前提として、Google がどんな時に C++ を使っているのかを念頭に置くか置かないかで、だいぶ見方が変わるような気はする。
Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)
- 作者: 西田圭介
- 出版社/メーカー: 技術評論社
- 発売日: 2008/03/28
- メディア: 単行本(ソフトカバー)
- 購入: 47人 クリック: 1,166回
- この商品を含むブログ (373件) を見る
Googleを支える技術によると、C++ は基盤システムやらインデックスサーバーやらの速度が求められる部分に使われる事が多いらしい。
で、そういうものを作るときって、指定されているもの以外の Boost ライブラリ使用禁止とか、ストリームはログとるときだけとか、実行時型情報(RTTI)禁止とかって、ほとんど困らないような気がするんだよなー。
一般ユーザー向け or 自分が手を抜いて作りたいソフトウェアを作るときなんかは、Boost 使用禁止は泣けるかもしれないけど、Google での C++ の使用用途を考えると「別に問題なくね?」と思うんだがどうか。というか、私自身、メインの仕事は C++ だけど、ここ2年ぐらい Boost ほとんど使ってないんだよなー。私のマシンの Boost は未だに 1.3.3 だ!(爆) Boost をバリバリ使わないといけないようなものって、そもそも C++ じゃなくて Java とか Ruby とかで組みたいよね(元も子もない)。
あと反感買いそうなのはデフォルト引数禁止ぐらい? これも理由を読むと「あるあるw」とは思うんだけど、便利だから使っちゃうなよなー。今のプロジェクトが終わったら自重してみよう。
好みの問題でしかないんだけど、定数の命名規則だけには激しく拒否反応。
Use a k followed by mixed case: kDaysInAWeek.
ハンガリアンは否定しているのに、定数の頭には"k"を付けてるのが、なんか納得いかねー。
アクセサと、その他の関数で命名規則が分かれてるのは、ちょっと面白いかもと思ったんだけど、
You may also use lowercase letters for other very short inlined functions. For example if a function were so cheap you would not cache the value if you were calling it in a loop, then lowercase naming would be acceptable.
Function Names
インライン関数は小文字許容? アクセサ以外のインライン関数を Regular Functions と違う命名規則にする意味がわからん‥‥。