原則は「1ファイル1クラス」。
基本的に「哲学」に由来する名前をつけ、間違っても「機能」に由来する名前はつけない。 なお、クラス名によって明示されている名前については、冗長なのでつけないようにする。 configクラス内において「configファイルの名前を設定する」メソッド
良い例: set_filename() set_filepath()
微妙な例:ちょっと冗長 set_config_filename() // configは分かりきってるので冗長
悪い例: set_string() // 文字列であるかどうかなんてのはぶっちゃけどうでも良いので
かならず public/protected/private 修飾子をつける。(PHP) なお、メソッドであっても、必要に応じてprotectedにすることが望ましい。
finalについては必要に応じて。ただ、フレームワークの柔軟性を考えると、あまり使わないだろうと思われる。
特殊なケースを除いて、原則としては、throwは「フレームワーク内では」投げない。 ちょっと検討が必要かも。
「へび」とする。 英小文字を用いる。複数単語がある場合、アンダースコアを使ってつなげる。 例: get_value
命名は「へび」とし、最後にアンダースコアをつける。 例: dbh_ user_data_
クラス変数は「アクセッサ以外では絶対に触らない」事を鉄則とする。 また、かならずprivateとし、protectedにはしない(アクセッサで対応すること)。 (デバッグ時の捕捉の問題があるので。 アクセッサは基本的に以下の2パターンのいずれかとする。
通常の場合 set_名前 get_名前
配列系(複数のデータを設定できるもの)の場合 push_名前:データを積み上げる set_名前:配列を一気に設定する:もとにある情報は潰して上書き、のイメージで get_名前:これは「配列を全部取得」する(keyなどを利用して一つだけ欲しい場合、別口にメソッドをつくり、このgetメソッド経由でアクセスする) clear_名前:データを消す
(PHP) また。これは強制ではないが、セッターの引数については 数字を期待していたら$i 文字を期待していたら$s 配列を期待してたら$a インスタンスを期待していたら $o にしておくと分かりやすい
型があるものと考え、かならず「一つのメソッドは一つの型を返す」ようにする。 なお、エラーについては以下の通りとする。
数値を返すものの場合:-1 ただし「正常な値として負の値も戻る」ようなメソッドの場合、原則として「boolean」復帰にする。
文字列を返すものの場合:"" 空文字 ただし「正常な値として空文字も戻る」ようなメソッドの場合、原則として「boolean」復帰にする。
配列を返すものの場合:空配列 ただし「正常な値として空配列も戻る」ようなメソッドの場合、原則として「boolean」復帰にする。
オブジェクトを返すものの場合:NULL ただし「正常な値としてNULLも戻る」ようなメソッドの場合、原則として「boolean」復帰にする(…って。ありえるのか?)
booleanを返すものの場合:false
ぶっちゃけ。基本的には、処理系はすべてboolean復帰とし、trueが帰ってきたら情報をget系で取得したほうがよいと思う。
注:これは要検討かも tabインデントであることはMust()。 見栄えを重視したときのtabのサイズは、一応2を推奨するが、4又は8でもよしとする。
各インデントは以下のようにする。 メソッド、変数宣言などはすべてインデント0
class クラス名
{
コンストラクタ
デストラクタ:必要に応じて
init
アクセッサ
メソッド各種
//
変数宣言
}
基本はPHPDocumentorを使用するイメージ
/** * classの説明(一行):基本的にクラス名 * * classの説明(複数行):クラスに対するコメント突っ込みの類 * HTMLに反映されたとき改行はされない * * @package magicweapon * @link http://www.grid-works-guild.net/MagicWeapon/ MagicWeapon * @access public * @author Michiaki Wuzawa <wuzawa@m-fr.net> * @create $LastChangedDate$ * @version $Revision$ */
メソッドあたりのコメント /** * メソッドの説明(一行):基本的にメソッド名 * * メソッドの説明(複数行):詳細な説明その他 * * @access publicかprivateかprotectedか * @param 型 名前 説明 * @return 戻り値の型 簡単な説明 */
一応「お便利君」であると想定すると、基本的には
がある程度正しいのではないかと推測してみたりみなかったり。
持ちまわりたいものが入ってるクラスつくるか。 grobalに近いけど、これならまだしも制御しやすいし。
持ちたいものとしては
…書かないとねぇ