- "Wt"ソースディレクトリ
全てのソースは,"Wt"ディレクトリ以下に格納する.
- アルゴリズムまたは機能ごとのサブディレクトリ
各機能またはアルゴリズムごとに,サブディレクトリを作成する.サブディレクトリ
名は,その機能を端的に表したもので,Wtで始まり,残りは各単語の始まりだけ大文
字で,残りは小文字で構成される.ただし,
明らかに単語を省略できる場合は,大文字のみの構成でもよい.
(例)Wt / WtList,Wt / WtBTree,Wt / WtDB
このサブディレクトリ名を,クラス名とする.以後,このサブディレクトリを,
クラスディレクトリと呼ぶ.
クラスの下に,さらに継承によって派生クラスを作る場合には,クラスディレクトリの下
に派生クラスのクラスディレクトリを作成する.
各クラスから派生するファイルは全てこのクラスディレクトリ内に格納する.
- クラスオブジェクト(インスタンス)名
クラスオブジェクト(インスタンス)名は,クラス名の後にDTを付加する.これは,
オブジェクト名をtypedefによって型定義するので,Data Typeの略で
ある.
(例)WtListDTは,WtListクラスのインスタンス名で,WtListデータタイプのことである.
- クラスメソッド名
ユーザから直接呼び出されるメソッドは,クラス名の後に,各単語の開始文字のみ大文
字にしたメソッド名を付加する.
(例)WtListEleクラス(List Elementクラス)で,リスト要素の挿入
(Insert)メソッド名は,WtListEleInsertになる.
ただし,クラスインスタンスを生成したり削除するメソッド名は統一して,
クラス名の後にNewまたはDelを付加する.
(例)WtListEleNew,WtListNew,WtDBNew
- 外部可視ファイル
ユーザから直接呼び出されるクラスメソッドは,クラスメソッドと同名のファイルで
定義される.したがって,マクロで定義されているメソッドを定義するファイルは,
極めて小さくなるが,メソッド名を探すときの利便性のために,この方針で首尾一貫
させる.
- 外部不可視ファイル
外部に見せない関数やデータオブジェクトを格納するソースファイル名は,x
で始まり,それ以降に対応するメソッド名をつける.
(例)WtListクラス全体に関わる隠しファイル: xWtList.c, xWtList.h
WtListDelメソッドに関する隠しファイル: xWtListDel.c
- クラスメソッド関連ファイルの格納場所
クラスメソッドに関する全てのファイルは,クラスディレクトリ内に格納する.
- 外部に見せたくない関数名,オブジェクト名
外部に見せたくない関数名,およびオブジェクト名は,必ずアンダースコアで始まり
その後にWtが続く.
(例)_WtListInit
- ヘッダファイルについて
ユーザにインクルードされるヘッダファイルは,複数回インクルードされても,
また,どのような順番でインクルードされても大丈夫なように書く.
- 外部から見える関数の定義
外部から見える関数を定義する場合,必ず関数名を括弧で囲む.こうすることによっ
て,ライブラリのユーザによって誤ってマクロでマスクされることがなくなる.
(例)WtListNewの定義
WtListDT (WtListNew)(void *list, void (*constructor)(void *this, ...)){
.....
}
- デバッギング用メソッド
ライブラリのデバッギング用に,Debugクラスを用いて各メソッドデバッギングコー
ドを埋め込む.Debugクラスの使用方法は,ドキュメンテーションを参照.