こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

今風(?)のコーディング規約が知りたい

C++ は初心者です。他の言語は結構長くやっております。C は多少経験があります。(が、知識が 10 年くらい前のものです)

趣味で C++ を始めたのですが、仕事や大きなコミュニティ内で使ったことがないために、今現在主流のコーディング規約というかお行儀の良いスタイルの判別が難しいです。ヘッダファイルや Google Codesearch 等で片っ端から色々なソースを見ているのですが結構バラバラなんですよね・・・

他の言語の経験があるので、switch の最後には何もなくとも default を明確につけとけ みたいなことの有用性はわかるのですが

ではなくて、細かいですけど

if (hoge)
{
}

なのか

if (hoge) {
}

なのか、とか (自分は下の方が好き)

int ←ここで改行する?(自分は改行する)
hogeHoge()
{
・・・

とか。
多分僕の個人的な好みは大昔にやった C (K&R スタイル?) や長く仕事で使っている Perl の影響が強い気がするので、C++ 的にはどうなのかなと。

変数名や関数名は GNU スタイルなのか キャメルスタイルなのか、キャメルスタイルだったら大文字から始めるのか、関数名だけ大文字から始める人もいれば、関数名も小文字からの人もいるし、enum の定数は全部大文字が普通?とか(きりないですorz)・・・

ハンガリアンはもう推奨されてないというのは理解してます。その理由もなんとなく。でもハンドルは hHoge にするのが普通みたいですし、bool型なら is~ とか can~ とか。人によってはグローバル変数にもプレフィックスつけるようですね。他にもそういうこれはプレフィックスつけるのが普通!ってのがあったら知りたいです。僕自身はめっちゃ長くなっても意味が正確にわかる変数名をつけとけ派なので、プレフィックスにはあまり必要性を感じないです。(英文みたいな変数名とか良くやる) でも、 C++ 長くやると多分考え方が変わるかなあと思うので。

とりあえず以下を読んでますが、それほど間違った選択はしていないでしょうか?

http://sec.ipa.go.jp/download/dl.php?filename=report/200606/CMGuide_V1-0.pdf
http://www.possibility.com/Cpp/CppCodingStandard.html

それはもう古い、今はこういう感じが普通、というのがあったら教えていただけると幸いです。(英語でも構いません)

個人で趣味レベルでやるなら、その程度は好きにしてかまわんでしょう、という意見でも OK です。好きにするんでも一貫したいので、どうせなら良いものを参考にしておきたいとは思ってます。(目的のモノを動かすのに数時間もかからなかったのに、そのコードをお行儀よく書き直そうとして数日も定まらずに何度も書き直したり・・・な状態なので。)

投稿日時 - 2009-02-24 12:59:16

QNo.4744919

暇なときに回答ください

質問者が選んだベストアンサー

とりあえず、ピアソン・エデュケーションの『C++ Coding Standards』を読んでみてください。

参考URL:http://www.pej-hed.jp/washo/459.html

投稿日時 - 2009-02-24 13:35:15

お礼

おー
こういうのが知りたかったんです。ありがとうございます。もう Amazon で注文しました。ざっと検索した感じ、書評書いてる人の傾向とかから良さを十分感じましたし、値段もお手ごろだったので。

STL にも触れられているようで楽しみです。
(C++ 初めて数時間でやっと STL の存在に気づく→かき直す→STL も色々描き方あるみたいだな→何がお行儀良いのかわっかんねー だったので)

投稿日時 - 2009-02-24 14:00:18

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

私は”プログラミング作法"を参考にしています。
http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E4%BD%9C%E6%B3%95-%E3%83%96%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3-%E3%82%AB%E3%83%BC%E3%83%8B%E3%83%8F%E3%83%B3/dp/4756136494

グローバル識別子には長い名称
ローカル識別子には短い名称

for (int Index = 0; Index < n; ++Index) ×
for (int i = 0; i < n; ++i) ○

一例です

投稿日時 - 2009-02-24 22:18:42

補足

表紙を見てなにかう~んと思ってたのですが、この本、知人の職場にあったので少し読んだことがあるような気がします。

投稿日時 - 2009-02-25 02:06:52

お礼

ありがとうございます。参考にしてみます。
(No.1 さんのを注文してしまったので二冊すぐというわけには・・・)

一時的なローカル識別子には短い名称、には同意です。
普段、長い名前付けるのはメンバ変数ですね。

投稿日時 - 2009-02-25 02:05:17

あなたにオススメの質問