スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コーディングスタイル座談会

ふと、今までC++でクラス名の先頭にCとつけていましたが、(CMyClassとか)

「それって意味がないのでは?」

と思いSkypeでJ(ジュニア)さんに相談しました。以下掲載の許可をいただきましたのでログを載せます。発言順などは適当にいじっています。
結論はあくまでも自分なりの結論なので、鵜呑みにはしないでくださいね。

内容
.クラス名の先頭にCをつけるのは如何なものか?
.C++ライブラリ、Boostは使うべき?
.if, switchの書き方について
.特定の値しか許さないんだったらintじゃなくてenumにするのはどうなんでしょう?
.その他(雑談、Qtコンパイル方法)


Q.クラス名の先頭にCをつけるのは如何なものか?

[11:17:08] FINAの発言: ふと思ったのですが
[11:17:13] J(ジュニア)の発言: ほい
[11:17:27] FINAの発言: C++でclass名つけるときに
[11:17:35] Jの発言: ふむふむ
[11:18:02] FINAの発言: 世間的に
[11:17:46] FINAの発言: CMyClassとかにするじゃないですか
[11:18:22] Jの発言: ふむふむ
[11:18:09] FINAの発言: Pythonとかやっていると
[11:18:27] FINAの発言: 先頭のCいらないのでは?と思ったのですが
[11:18:33] FINAの発言: どう思いますか?
[11:18:48] Jの発言: 人それぞれじゃないですかねぇ
[11:19:28] Jの発言: 個人的にはインターフェースクラスにはIつけたいですが
[11:19:55] FINAの発言: マイクロソフトはインターフェイスに先頭Iは推奨しているみたいです。
[11:20:01] FINAの発言: Pascal風らしいです
[11:20:38] FINAの発言:
Pascal 形式を使用して、名詞、名詞句、または場合によっては形容詞句で、クラス、インターフェイス、および値型に名前を付けます。
クラス名には、プリフィックス (C など) を使用しないでください。

I で始まる必要のあるインターフェイスは、この規則の例外です。

[11:21:02] Jの発言: わかりやすければなんでもいいかと!
[11:21:17] Jの発言: ただidSoftwareみたいに先頭にidつけるのは嫌いですがw
[11:21:46] FINAの発言: softwareIdとかがいいですね
[11:22:38] Jの発言: Σ(゚Д゚;≡;゚д゚)
[11:22:46] FINAの発言: ( ・ω・)?
[11:22:53] Jの発言: idSoftwareQuake作った会社です
[11:23:00] Jの発言: クラス名はみんな「id」ではじまるルールになってるみたいです
[11:23:07] FINAの発言: きめぇw
[11:23:12] Jの発言: 超きめえw
[11:23:55] FINAの発言: namespace!

A.わかりやすければいい。しかし、idMyclassとかはどうかと思う。(プロジェクト単位だったらnamespaceで括りましょう)




Q.C++ライブラリ、Boostは使うべき?

[11:24:21] FINAの発言: そういえばBoost本買いました
[11:24:32] FINAの発言: こんなにいいものだったんですね。Boost
[11:24:36] Jの発言: おお
[11:24:46] Jの発言: おらいりーのやつですか?
[11:24:52] FINAの発言:

Boost C++ LibrariesプログラミングBoost C++ Librariesプログラミング
(2007/07)
稲葉 一浩

商品詳細を見る

[11:25:05] Jの発言: あーなるほど
[11:25:29] FINAの発言: 最近EffectiveC++みたいな白い本出ていましたが
[11:25:40] FINAの発言: 評判がわからないので買えません…
[11:26:38] FINAの発言:
Boost C++をチューンアップする最先端ライブラリBoost C++をチューンアップする最先端ライブラリ
(2008/10/07)
ビョルン・カールソン

商品詳細を見る

[11:26:40] Jの発言: ほうほう
[11:27:34] Jの発言: そうそうこの本ちょっと気になるんですよねー
[11:28:07] FINAの発言: SmartPtrとかありますけど
[11:28:25] FINAの発言: ×××氏(自主規制)のイメージが高くて、何か使いたくない感じがしますw
[11:28:35] Jの発言: www
[11:28:48] Jの発言: shared_ptrは次期C++標準に入りますし
[11:28:52] Jの発言: がんがん使っていいかと!
[11:29:14] FINAの発言: Boostを使わないと損ということですね
[11:29:25] FINAの発言: 使ったら便利過ぎますし
[11:30:24] Jの発言: (・・)(。。)

A.Boostは是非使いましょう。次期C++では標準機能になっている可能性があります。





if, switchの書き方について

[11:41:56] Jの発言: なんだかんだで
[11:42:07] Jの発言:
if (hoge) {
  fuga
}
[11:42:09] Jの発言: よりは
[11:42:12] Jの発言:
if ( hoge )
{
  fuga
}
[11:42:16] Jの発言: が見やすいんですよねー
[11:42:20] FINAの発言: 同意
[11:42:45] FINAの発言: switchも
[11:43:42] FINAの発言:
swtich(hoge)
{
  case 1:
    printf();
    break;
}
[11:43:48] FINAの発言: よりも
[11:44:19] FINAの発言:
swtich(hoge)
{
  case 1:
  {
    printf();
  }
  break;
}
[11:44:31] FINAの発言: ちょっとミスしましたが、これですね
[11:44:48] Jの発言: なるう






Q.特定の値しか許さないんだったらintじゃなくてenumにするのはどうなんでしょう?

[11:45:24] FINAの発言: あと
[11:47:02] FINAの発言: http://d.hatena.ne.jp/bleis-tift/20090113
[11:47:32] FINAの発言: はキャストが面倒ですが、悪くないと思っています
[11:48:08] FINAの発言: ソース見ればわかりますし
[11:48:31] Jの発言: そうですね
[11:48:36] Jの発言: このやり方はQtスタイルでつね
[11:48:40] Jの発言: あーQtのコーディングスタイルは美しい
[11:48:56] FINAの発言: Qtの実装部分ですか?
[11:49:04] Jの発言: Qtのスタイルガイド見ると
[11:49:26] Jの発言: 関数の分け方から、こういう即値にenumをつけろとか
[11:49:28] Jの発言: いろいろ書いてあるですよ
[11:49:37] FINAの発言: kwsk
[11:50:45] Jの発言: http://doc.trolltech.com/qq/qq13-apis.html
[11:51:21] FINAの発言: 英語きましたね。最近は慣れっこですが…
[11:51:28] Jの発言: そのblogに書いてあるのは
[11:51:31] Jの発言: The Boolean Parameter Trap
[11:51:35] Jの発言: て項目にあります
[11:52:06] FINAの発言: いいですね
[11:52:32] FINAの発言: textEdit->insert("Where's Waldo?", true, true, false);
こんなのぱっと見分かるわけがないw
[11:52:39] Jの発言: でも多いですよねw
[11:52:41] Jの発言: Win32APIとか!
[11:52:52] FINAの発言: DirectXとか!
[11:52:55] Jの発言: うんうん
[11:52:56] Jの発言: わけわからないというw
[11:53:39] FINAの発言: C言語で列挙を使用する場合、引数がintになるので分かりづらい
[11:54:21] Jの発言: 列挙型の引数を一個増やしたら
[11:54:26] Jの発言: ズレたのにコンパイルエラーにならなくて
[11:54:30] Jの発言: うごかねーと怒られたことがあります(´・ω・`)
[11:55:27] FINAの発言: やはり、列挙はclass内宣言です
[11:56:02] FINAの発言: int値とか簡単には入れられないので、上記のような問題も少ないですよね
[11:57:23] Jの発言: 列挙型の問題は
[11:57:31] Jの発言: uint32_t で受け取らないと論理和指定ができないこと(´・ω・`)
[11:58:11] FINAの発言: そうだったんですか
[11:58:21] Jの発言: あーいやたとえば
[11:58:30] Jの発言:
enum Hoge {
  A,
  B
}; があって
[11:58:38] Jの発言: void hoge(Hoge h) があった時に
[11:58:43] Jの発言: hoge(A | B) ←えらー
[11:59:06] FINAの発言: あー
[11:59:27] FINAの発言: hoge(unsigned int )じゃないと駄目ってやつですね
[11:59:34] Jの発言: でQtはそれに対処するために
[11:59:38] FINAの発言: お
[11:59:42] Jの発言: QFlagsなるテンプレートを用意してたりします
[11:59:46] Jの発言: というのもさっきのページに書いてあったり
[11:59:57] Jの発言: Qtのデザインはかなり洗練されてるので参考になります(`・ω・´)
[12:00:12] FINAの発言: おお
[12:00:35] FINAの発言: wxWidget派でしたが、
[12:00:42] FINAの発言: Qt派になりそうですw
[12:00:46] Jの発言: Qtも4月からLGPLになるんで
[12:00:49] Jの発言: 自由に公開できます(`・ω・´)
[12:00:50] Jの発言: ぜひ!

A.ソースを見たときにパッと見でわかる、さらにミスをしにくいので是非やりましょう。コーディングスタイルはQtが美しいらしい。(まだ見ていない)





雑談

[12:00:58] FINAの発言: Qtの前のライセンスは何でしたっけ?
[12:01:02] Jの発言: GPLです
[12:01:06] Jの発言: ソース公開必須
[12:01:26] FINAの発言: LGPLはソース公開推奨でしたっけ
[12:01:37] Jの発言: 動的リンクならソース公開の義務がないというやつです
[12:01:48] FINAの発言: DLL
[12:01:55] Jの発言: (・・)(。。)
[12:01:58] Jの発言: でQtはDLLで提供されてるので
[12:02:04] Jの発言: 実質改変しない限りフリー
[12:02:12] FINAの発言: わーい
[12:02:13] Jの発言: (・∀・)イイ!!



[12:07:19] FINAの発言: http://www18.ocn.ne.jp/~amedas/tips/coding_style.html
[12:10:26] FINAの発言: doxygenの「変数”m_level”に対して、アクセスを”level()”としています。下の例で親クラスのテンプレートに自分自信をいれている点に注目です。 」が面白いです
[12:11:09] Jの発言: むふ
[12:12:21] Jの発言: しかし日本人は根本的に英語の名前つけるの苦手っていうのが
[12:12:22] Jの発言: 問題ですよね(´・ω・`)
[12:12:34] FINAの発言: 確かにw
[12:12:44] Jの発言: そこでATOK2009ですよ!
[12:12:49] Jの発言: F4で英単語変換!
[12:12:51] FINAの発言: !
[12:12:55] FINAの発言: 実験
[12:13:00] FINAの発言: experiment
[12:13:04] Jの発言: (・・)(。。)
[12:13:04] FINAの発言: すげぇw
[12:13:08] Jの発言: 便利w
[12:13:16] FINAの発言: 関数
[12:13:27] Jの発言: 案外ないのがたくさん(´・ω・`)
[12:13:37] Jの発言: 英数字モードだと補完で出てくるんですけどねぇ
[12:13:47] FINAの発言: 関数がないだと…
[12:14:22] FINAの発言: function
[12:14:30] FINAの発言: Tabだと確かにありますね
[12:15:40] FINAの発言: Googleのコーディングスタイル発見
http://www.henshi.net/k/hiki.cgi?GoogleCppStyleGuide
[12:15:57] Jの発言: Googleのはあんまり好きじゃないっすねえ(´・ω・`)
[12:16:19] Jの発言: (名前ルールだけ
[12:16:35] FINAの発言: 思うんですけど、
定数の名前
kの後ろに大文字と小文字で名前を続けてください:kDaysInAWeek

[12:16:47] FINAの発言: のkってなんなんでしょうかね?
[12:17:52] Jの発言: なんでなんですかねえ



Qtコンパイル方法

[12:21:49] FINAの発言: QtDLcomplete
[12:22:48] Jの発言: Oh
[12:24:59] FINAの発言: やはりVCProjectなんてなかった
[12:25:12] Jの発言: コンパイルは簡単ッスよ
[12:25:27] FINAの発言: Makefileはどこだ…
[12:26:10] Jの発言: http://code-a.blog.so-net.ne.jp/2007-03-25
[12:26:28] Jの発言: 今はパッチ使わなくても
[12:28:03] Jの発言: VisualStudioコマンドプロンプトから
[12:28:11] Jの発言: qtのフォルダにいって
[12:28:15] Jの発言: configure
[12:28:19] Jの発言: 終わったら nmake
[12:28:21] Jの発言: で終わりです
[12:29:38] FINAの発言: thanks!
関連記事
スポンサーサイト

コメント

非公開コメント

プログラミング関連ブログ

ハッカーと同人作家

プログラミング関連雑多などは上記のブログにて。

twitter

プロフィール

ふぃなっぷ

Author:ふぃなっぷ
ふぃなっぷです。こんな名前だけど、男性です。
好きなことを楽しくやっていきます。同人ゲームを制作したり、本を書いたり。
同人を通じて成長していけたらなぁと思っています。

>∩( ・ω・)∩< テーレッテー
ζ*'ヮ')ζ∩< テッテッテー

ご意見、ご感想、お問い合わせはこちらからどうぞ

応援中

相州戦神館學園 万仙陣 応援中! Dies irae ~Amantes amentes~応援中!

ブロとも申請フォーム

QRコード

QRコード

FC2カウンター

エリア51

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。