C/C++: 2008年1月アーカイブ

C++でも自動でドキュメント生成してくれるツールあるに決まってるよなってことで、調べたら、Doxygenっていのが一般的っぽいんで、これを使うことにした。ヘッダコメントとかもDoxygen対応の書式にした。

インストールしたら、DoxywizardってGUIのツールができるから、これ使ってちょっと設定変えて、[Start]ボタン押すだけでドキュメントが生成できた。

コメントの書き方は、QtスタイルとJavaDocスタイルがあるけど、自分はJavaDocスタイルに慣れてるからこれを使うことにした。

設定をいじったとこは、

  • [OUTPUT_LANGUAGE]をJapaneseへ
  • [INPUT_ENCODING]をShift_JISへ
  • privateメンバを表示するように、[EXTRACT_PRIVATE]を有効へ
  • コメント1行目の概要を表示するように、[JAVADOC_AUTOBRIEF]を有効へ
  • ファイル一覧でフルパスが表示されないように、[FULL_PATH_NAMES]を無効へ

ってとこかな。

で、ヘッダコメントは↓こんな感じにした。

  • ファイルヘッダ

/**
 * @file Di.h
 *
 * @brief DirectInput処理
 *
 * @author 1122
 * @date 2008/01/18
 */

  • クラスヘッダ

/**
 * DirectInput処理
 *
 * @author 1122
 * @date 2008/01/18
 */

  • 関数ヘッダ

/**
 * DirectInput初期化
 * 
 * @param[in] a_hWnd ウィンドウハンドル
 * @param[in] a_hInstance インスタンスハンドル
 * 
 * @return 処理結果
 * @retval true 成功
 * @retval false 失敗
 */

前にC++で作ってたゲームが久々気になり、ソースコードを眺めてた。そしたらそのコードにイライラしてきたので、リファクタリングを始めた。

学生の頃に作ったコードだから、もちろんコーディング規約を作ってるわけはなく、暗黙の了解という感じでコーディングの仕方をそろえてた。それで何となくは規則性のあるコードが書かれてたけど、ただ規則的なだけで、わかりにくい記述がいくつかあった。そんで、まずは規約を作ってみた。

関数のヘッダコメントも規約として決めた。
↓例えばこんなん。

//----------------------------------------------------------
// Name   : Init
// Desc   : 初期化
//
// Arg    : [in]  int  a_nIn   : 入力値
//          [out] int* a_pnOut : 出力値
//
// Return : int nRet : 戻り値
//----------------------------------------------------------

引数のとこを"Arg"にするか"Param"にするかというどーでもいいことで悩んだ。自分としては"Param"って書いた方がパッと見わかりやすい。ただね、今回作った規約では、変数名はハンガリアン記法ってことにしてある。ハンガリアン記法だと、引数のプレフィクスは"a_"が一般的。で、この"a_"っつーのは、Argumentの頭文字。そうすると、引数の説明は"Arg"にしないと統一感ねーよな…、となり、散々悩んで、"Arg"に決定。こういうとこでも優柔不断全開。

JavaDocとかphpDocumentorみたいに、C++ Docとかいうのがあればなぁ。。。

ハンガリアンなんだけど、これは元々嫌いだったんだけど、仕事で使ってみたら、コード理解しやすいってことがわかり、なるべく使うようにしてる。

プロフィール

  • 1983年生まれ。
    C++、PHP、JavaScript、ActionScriptで何か作ってます。

技術書

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
C++ Coding Standards―101のルール、ガイドライン、ベストプラクティス (C++ in‐depth series)
JavaScript 第5版
まるごとJavaScript & Ajax ! Vol.1
CakePHPガイドブック
CakePHP ポケットリファレンス (Pocket Reference)
Powered by Movable Type 4.01

このアーカイブについて

このページには、2008年1月以降に書かれたブログ記事のうちC/C++カテゴリに属しているものが含まれています。

次のアーカイブはC/C++: 2008年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2008年10月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

C/C++: 2008年1月: 月別アーカイブ

リンク