人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: TopT
●カテゴリ:コンピュータ 学習・教育
✍キーワード:C++ お勧め コーディング プログラム ルール
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● nitscape
●30ポイント

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;

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


2 ● キルP
●40ポイント

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

?R?[?f?B???O?K? ◎質問者からの返答

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


3 ● Wafer
●30ポイント

http://www10.ocn.ne.jp/~neighbor/lab/tips001.html

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

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

http://mikata.curiocube.com/

??????l?????

おすすめのHPです。

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

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

株式会社アスキー

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

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

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ