ファイルレイアウト

2383 ワード

最近、林鋭博士の「高品質プログラム設計ガイドライン」を読んで、役に立つものをたくさん見て、ここで簡単に記録します.
ヘッダファイルレイアウト
ヘッダファイルには、次の内容が含まれます.
  • ヘッダファイルコメント(ファイルの説明、機能の説明、著作権の宣言など)--
  • が必要です.
  • 内部には、ガード開始(#ifndef XXX/#define XXX)が含まれています.
  • が必要です.
  • #include他のヘッダファイル--
  • が必要な場合
  • 外部変数とグローバル関数宣言--
  • が必要な場合
  • 定数およびマクロ定義--
  • が必要な場合
  • タイプ事前宣言および定義(class A;)--
  • が必要な場合
  • グローバル関数プロトタイプとインライン関数の定義--
  • が必要な場合
  • 内部には、ガード終了(#endif)が含まれています.
  • が必要です.
  • ファイル修正記録
  • ここで、ヘッダファイルコメントの例は次のとおりです.
    /************************************************************************
    * 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;
    	...
    };