個人的にプロジェクト作る時のディレクトリ構成とかURIとか関数名とか気を付けていること
- 基本的にトランザクションスクリプトが好き
- 仕事でいいな、納得/共感出来るもの、反論出来ないものは積極的に取り入れる
基本
- 引数は最大でも4つ
- 4つになった時点で何かおかしいと思った方がいい
- 一行の桁数は最大78
- PBPまま
- 変数/関数/クラス名はそれぞれ16文字程度をメドにする
- 長くて伝わらないレベルなら短い方がマシ
- たとえ長くなっても動詞-目的語-補語くらいを目安にする
- 単一責任の法則を遵守する
- たとえテストメソッド書かなくても、書くならどうするかを意識しておく
- 関数の行数は別にこだわらないが、多くても50には収める
- ファイルの行数は全くこだわらないが、2000とか超えたら何かおかしいと思う
- 短ければいいわけではないが、長いのは何かおかしいと思うように心がける
- ネストレベルは最大でも3
- バグの温床
URI
- 以下のactionが一つのファイルに収まるF/Wを選ぶべきと考えている
- action:fileが1:1のF/Wは使わない
閲覧
- /foo/list
- /foo/bar/detail
- /foo/search
新規作成
- /foo/add
- /foo/add/confirm
- /foo/add/execute
編集
- /foo/bar/edit
- /foo/bar/edit/confirm
- /foo/bar/etit/execute
削除
- /foo/bar/remove
- /foo/bar/remove/confirm
- /foo/bar/remove/execute
ディレクトリ構成
- 基本的にモダンPerl入門で書かれていたディレクトリ構成の影響を受けている
- Controllerは長いのでActionにしたい
- 用途/出力先によって、ディレクトリ構成は変える
- 用途が限定されるVIEWなんかはそのディレクトリ配下に置く
- Logic/ModelはSIいた時に*Logicが多かったのでそのせいかな?
- Daoは分けたい
- ORM使いたくないクラスタなので、SQLを分離したい
- さすがにこの下にも色々とディレクトリ掘ります
.
├── Cli
│ └── Action
├── Dao
├── ext-lib
├── Logic
├── public
│ ├── img
│ └── css
└── Web
├── Action
└── template
├── fp
└── sp
関数名
Action
- URIを繋ぐ感じで(言語によってキャメルケース/スネークケースは多い方に準拠)
- ex. add, add_confirm, add_execute
Logic
- retrieve_foo
- 複数件SELECTメソッドのラッパー
- fooには=条件、in条件など
- find_foo
- 一件SELECTメソッドのラッパー
- fooには=条件、in条件など
- create
- INSERTメソッドのラッパー
- store_foo
- UPDATEメソッドのラッパー
- remove_foo
- DELETEメソッドのラッパー
- これだけactionと同じ名前になってしまう。。
- is_foo
- 返り値が真偽値
- calc
- 引数から何らかの計算をする
DAO
- select_foo
- 複数取得
- fetch_foo
- 一件取得
- insert
- 条件なんてない
- insert
- 条件なんてない
- bulk_insert
- 条件なんてない
- update_foo
- bulk_update_foo
最後に
- オレオレなので、アドバイス/感想/ご意見/批判頂けますと幸いです