MicrosoftVisualC++(きっと6.0)でプログラム開発を始める予定です。小人数(多くても4人)のチームですが、初めて顔合わせする人もいるので、コーディングルールを定めようと思っています。お勧めのコーディングルールがあったら、お勧めの理由を含めての回答をお願いします。コーディングルールについて論じているページでも結構です。具体的なコーディングルールが気に入った方、推薦理由に納得できる方に高めの配点をさせて頂くつもりです。宜しくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/11/18 16:42:23
  • 終了:--

回答(3件)

id:nitscape No.1

nitscape回答回数526ベストアンサー獲得回数02005/11/18 17:07:06

ポイント30pt

http://www.mozilla-japan.org/hacking/mozilla-style-guide.html

Mozilla コーディングスタイルガイド

URLはMozillaプロジェクトのものですが、一般的なコーディングでも参考になると思います。


後は...

どれだけ多言語やローカライズを意識したものを作るのか、どれだけ汎用的に作るのか、MFCやATL、WTLを利用するのかなどにもよってきますが、私の場合は


・TCHAR系をきちんと利用する

UnicodeとMBCSできちんとビルドおよび実行が出来るようにする


・CStringなどをわたさない

SetData(CString strData){}のような関数にはせずに

SetData(LPCTSTR lpszData){}のようにTCHAR系でわたす(パフォーマンスアップにもつながります。CStringを介すとコンストラクタなどが呼ばれますから)


・ポインタ渡しはせずに参照渡しにする

ポインタ渡しだと

GetData(CString* pstrData)

{

 if(pstrData == NULL)return;

 *pstrData = _T(””);

}

のようにポインタのチェックが必要ですが、場合によって忘れてしまうことなどがあるので

GetData(CString& strData)

{ strData = _T(””);}

のようにポインタチェックが不要な参照渡しにしています。


・classにきちんとconstを付ける

class CData

{

bool GetData() const;

};

のように適切なconst宣言をメンバー関数に使う。


・できるだけ汎用的に作る

例えばデータ圧縮関数やスタック、キューなど、どこでも使いそうなものはきちんとクラスにまとめて、再利用が可能に作っています。その際にはcppなどは使わずにWTLのように簡単に利用がかのうなように(ソースは汚くならないように注意を払って).hのみでまとめています。


・pragmaを使う

#pragma comment(lib,”aaa.lib”)

のような嫌われることもある宣言を使って、プロジェクト設定をいじることなく、依存するライブラリを使えるようにしています。そうすると後でプロジェクトを作り直したときにどのlibが必要だったのか悩む必要もないですから。


・リテラル文字列は使わない

CString strData = _T(”あいう”);

のように文字列を直接代入すると、後々ローカライズが大変ですから、

strData.LoadString(IDS_DATA);

のようにリソースから取り込むようにします。


・グローバル変数は”絶対”使わない

子プロセス起動があったときにトラブルの元ですから


・コールバックのstatic関数もすべてclassに入れる

CALLBACKだからと言ってclassの外に出すと、どこで使われているものだか沸け分からなくなりがちですので。


という感じにしています(ほかにも色々ありますが)。

この手のものは集まっているプログラマの技量によってはまったく役に立たなかったりもします。技量のない人のソースは誰かががきちんとチェックやスタイルを統一させるような作業をした方が無難なこともあります。


後は基本的なコーディングとして変数の名前付け規約でしょうか?私は

CString strData;

CStringW ustrData;

CStringArray austrData;(MFCのCStringArrayを利用することはないですが、配列クラスのときはaを付けています)

CMAP<> mapData;

BYTE cbData;

LPBYTE pcbData;

BYTE pcbData[10];

int nData;

CComAutoCriticalSection sec_nData;

という感じにしています。ちなみにメンバー変数の場合は_を付加しています。

id:kill_p No.2

キルP回答回数68ベストアンサー獲得回数32005/11/18 18:42:14

ポイント40pt

http://homepage2.nifty.com/tenk/prog/cstyl_ex.htm

�R�[�f�B���O�K�

id:TopT

ご紹介、ご意見ありがとうございます。

2005/11/19 14:50:15
id:Wafer No.3

Wafer回答回数103ベストアンサー獲得回数02005/11/18 23:05:21

ポイント30pt

マイクロソフトが採用しているコーディングルールだったかと思います。

議論はあると思いますが、メジャーなルールではあります。メジャーであるということは、初めて会う相手も知っている可能性が高いという点でメリットがあります。

http://mikata.curiocube.com/

�‚����l�̖���

おすすめのHPです。

参考にされるといいでしょう。

http://www.ascii.co.jp/

株式会社アスキー

あとはなにか書籍を一冊用意されるといいと思います。

C++のリファレンスマニュアルはCのものに比べて激高なうえ分厚いですが、本格的にプログラミングを始めるなら、用意する必要はあるかもしれません。

id:TopT

ありがとうございます。

2005/11/23 09:48:36

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません