ファイルレイアウト
最近、林鋭博士の「高品質プログラム設計ガイドライン」を読んで、役に立つものをたくさん見て、ここで簡単に記録します.
ヘッダファイルレイアウト
ヘッダファイルには、次の内容が含まれます.ヘッダファイルコメント(ファイルの説明、機能の説明、著作権の宣言など)-- が必要です.内部には、ガード開始(#ifndef XXX/#define XXX)が含まれています. が必要です.#include他のヘッダファイル-- が必要な場合外部変数とグローバル関数宣言-- が必要な場合定数およびマクロ定義-- が必要な場合タイプ事前宣言および定義(class A;)-- が必要な場合グローバル関数プロトタイプとインライン関数の定義-- が必要な場合内部には、ガード終了(#endif)が含まれています. が必要です.ファイル修正記録 ここで、ヘッダファイルコメントの例は次のとおりです.
ソースファイルのレイアウト
ソースファイルに含めるべき内容は次のとおりです.
ソース・ファイルの注釈(ファイルの説明、機能の説明、著作権の宣言など)--
前処理コマンド--必要に応じて
定数とマクロ定義--必要に応じて
外部変数の宣言とグローバル変数の定義と初期化--必要に応じて
メンバー関数とグローバル関数の定義--必要に応じて
ファイル変更レコード
ファンクションヘッダには、次のようなファンクションヘッダコメントが必要です.
関数注釈は関数の前に置くべきで、機能の簡単な関数に対して、1行の注釈だけでその作用を簡単に説明するか、直接注釈を付けないことができます.
ADT/UDTレイアウト
ADT/UDT(クラスなど)のレイアウトは主に2種類あります.
privateは以前、このような通常は「データ中心」でADT/UDTを設計し、内部構造に重点を置いていた.
publicは従来、ADT/UDTを設計するために「動作中心」であり、提供されるインタフェース(またはサービス)に重点を置いていた.
後の「行動中心」のレイアウトを採用することをお勧めします.これは、クラスを設計する際に自分の考えをはっきりさせ、他人が読むのを便利にすることができるからです.
データ中心のレイアウト:
動作中心のレイアウト:
ヘッダファイルレイアウト
ヘッダファイルには、次の内容が含まれます.
/************************************************************************
* Copyright(c) 2011-2012 Company Name
* All Right Reserved
*
* : filename.h
* : 、
*
* : 1.2
* / :
* :
* :
*
* : 1.0
* :
* :
* :
************************************************************************/
ソースファイルのレイアウト
ソースファイルに含めるべき内容は次のとおりです.
ソース・ファイルの注釈(ファイルの説明、機能の説明、著作権の宣言など)--
前処理コマンド--必要に応じて
定数とマクロ定義--必要に応じて
外部変数の宣言とグローバル変数の定義と初期化--必要に応じて
メンバー関数とグローバル関数の定義--必要に応じて
ファイル変更レコード
ファンクションヘッダには、次のようなファンクションヘッダコメントが必要です.
/************************************************************************
* :
* :
* : Param1---
* Param2---
* Param3---
* :
************************************************************************/
関数注釈は関数の前に置くべきで、機能の簡単な関数に対して、1行の注釈だけでその作用を簡単に説明するか、直接注釈を付けないことができます.
ADT/UDTレイアウト
ADT/UDT(クラスなど)のレイアウトは主に2種類あります.
privateは以前、このような通常は「データ中心」でADT/UDTを設計し、内部構造に重点を置いていた.
publicは従来、ADT/UDTを設計するために「動作中心」であり、提供されるインタフェース(またはサービス)に重点を置いていた.
後の「行動中心」のレイアウトを採用することをお勧めします.これは、クラスを設計する際に自分の考えをはっきりさせ、他人が読むのを便利にすることができるからです.
データ中心のレイアウト:
class A {
private:
int i;
int j;
...
public:
void Func1(void);
void Func2(void);
...
};
動作中心のレイアウト:
class A {
public:
void Func1(void);
void Func2(void);
...
private:
int i;
int j;
...
};