Develop and Download Open Source Software

Recent Changes

2011-03-30
2011-03-29
2011-03-23
2011-02-25
2010-05-20
2008-09-03

Wiki Guide

Side Bar

開発メモ

ファイルについて

原則は「1ファイル1クラス」。

命名について

基本的に「哲学」に由来する名前をつけ、間違っても「機能」に由来する名前はつけない。 なお、クラス名によって明示されている名前については、冗長なのでつけないようにする。 configクラス内において「configファイルの名前を設定する」メソッド

良い例: set_filename() set_filepath()

微妙な例:ちょっと冗長 set_config_filename() // configは分かりきってるので冗長

悪い例: set_string() // 文字列であるかどうかなんてのはぶっちゃけどうでも良いので

アクセス権について

かならず public/protected/private 修飾子をつける。(PHP) なお、メソッドであっても、必要に応じてprotectedにすることが望ましい。

finalについて(Java、PHP)

finalについては必要に応じて。ただ、フレームワークの柔軟性を考えると、あまり使わないだろうと思われる。

例外処理について

特殊なケースを除いて、原則としては、throwは「フレームワーク内では」投げない。 ちょっと検討が必要かも。

メソッド名について

「へび」とする。 英小文字を用いる。複数単語がある場合、アンダースコアを使ってつなげる。 例: get_value

クラス変数について

命名は「へび」とし、最後にアンダースコアをつける。 例: dbh_ user_data_

アクセッサについて

クラス変数は「アクセッサ以外では絶対に触らない」事を鉄則とする。 また、かならずprivateとし、protectedにはしない(アクセッサで対応すること)。 (デバッグ時の捕捉の問題があるので。 アクセッサは基本的に以下の2パターンのいずれかとする。

通常の場合 set_名前 get_名前

配列系(複数のデータを設定できるもの)の場合 push_名前:データを積み上げる set_名前:配列を一気に設定する:もとにある情報は潰して上書き、のイメージで get_名前:これは「配列を全部取得」する(keyなどを利用して一つだけ欲しい場合、別口にメソッドをつくり、このgetメソッド経由でアクセスする) clear_名前:データを消す

(PHP) また。これは強制ではないが、セッターの引数については 数字を期待していたら$i 文字を期待していたら$s 配列を期待してたら$a インスタンスを期待していたら $o にしておくと分かりやすい

戻り値について(PHP、Perl)

型があるものと考え、かならず「一つのメソッドは一つの型を返す」ようにする。 なお、エラーについては以下の通りとする。

数値を返すものの場合:-1 ただし「正常な値として負の値も戻る」ようなメソッドの場合、原則として「boolean」復帰にする。

文字列を返すものの場合:"" 空文字 ただし「正常な値として空文字も戻る」ようなメソッドの場合、原則として「boolean」復帰にする。

配列を返すものの場合:空配列 ただし「正常な値として空配列も戻る」ようなメソッドの場合、原則として「boolean」復帰にする。

オブジェクトを返すものの場合:NULL ただし「正常な値としてNULLも戻る」ようなメソッドの場合、原則として「boolean」復帰にする(…って。ありえるのか?)

booleanを返すものの場合:false

ぶっちゃけ。基本的には、処理系はすべてboolean復帰とし、trueが帰ってきたら情報をget系で取得したほうがよいと思う。

インデントとクラス書式について

注:これは要検討かも tabインデントであることはMust()。 見栄えを重視したときのtabのサイズは、一応2を推奨するが、4又は8でもよしとする。

各インデントは以下のようにする。 メソッド、変数宣言などはすべてインデント0

class クラス名
{
コンストラクタ
デストラクタ:必要に応じて

init

アクセッサ

メソッド各種

//
変数宣言
}

コメントの書き方

PHP編

基本は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 戻り値の型 簡単な説明
 */

controllerが持つべき実体への考察

一応「お便利君」であると想定すると、基本的には

  • controllerでnew
  • 参照持ち回り

がある程度正しいのではないかと推測してみたりみなかったり。

持ちまわりたいものが入ってるクラスつくるか。 grobalに近いけど、これならまだしも制御しやすいし。

持ちたいものとしては

  • CGI REQUEST
  • CGI RESPONSE
  • AUTH系 ???
  • 再帰call用の「持ち回り鞄」クラス

CONVの使い方

…書かないとねぇ


SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.