忘れそうなので書き留めておこう。
Xhwlayが終わってようやくYakiBikiに取りかかれるのだけれど、memoriesで失敗したことや、3年間待ち続けた機会損失を鑑みて、YakiBikiの最初のバージョンをどうやって作るのか、だけ。
合い言葉:「欲しい機能は後回し。」
これに尽きる。
綺麗で直交したクラス設計?後回し!動けばいいんじゃない!?
MySQLやPostgreSQLとか使う?後回し!適当なHoge Separated Valueなフォーマットでファイル直操作で良いんじゃない!?
PEAR_Auth使った柔軟なユーザー認証は?後回し!とりあえずデモれれば良いのだから、メールアドレスとユーザー名、パスワードさえ適当にファイルで管理してればよかね!?
gettextで国際化したいなぁ・・・。後回し!誰かに怒られそうだけど、とりあえずPHPの連想配列で定義したファイルの読み込みを設定で切り替えられればいいんじゃね?
動作速度が気になる?後回し!遅ければCache_Liteでごまかせ!
エラー処理もきちんとしたいが・・・。後回し!大丈夫、あとでどうにでもなるさ!!
重複コード削りたい?後回し!どうせI/Fも内部実装も変わるのだ!んなもん、stableになってからStagehand_TestRunner+SimpleTestの単体テスト回帰実行で取り除いても遅くはない!
捨てられない物
- インデントはスペース4つ。TABは不可。(趣味)
- 80桁改行を遵守する。(趣味)
- テスト駆動開発。
テスト駆動開発・・・まぁ、書ける範囲になるけど。エラー系も当面は殆ど無視しちゃって良いんだけれど。テストケースを書くというのは、テストしたい機能(大抵はクラスになるけど)のI/Fのスケッチを描く事に相当する・・・ようにできれば、上手い。と思うので。最近は。
多分重複コードが大量に出てくると思うが、現時点ではあまり気にしないことにする。もちろん、CRUD系の内部実装では、今回はファイルを直にfopen()で開いてfread()やfwrite()で書き込み・・・とかするため、同じパターンが発生する。そういうのについては、まあまとめちゃっても良い。
まとめちゃっても良いし、実際そうし始めてるけど、多分、絶対後で、「あ〜〜、こうまとめ直した方がよりスマートだなぁ」とどうしても思ってしまうだろう。それでも、気にしない。後回し。とりあえず動いているのであれば、放置。
とにかく、捨てる。今までプログラマとしてやってきて、その過程で「よりすごいコードにしたい」という欲望が出てくるわけだけど。memoriesは、それを追求しすぎて結局絵に描いた餅で終わった。
今回ばかりは、そうした欲望すら、ばんばん捨てる。
汚くても良い。作り捨てオッケー。重複コード上等。どんなにプログラマ(未来の自分を含める)が目をしかめる有様になろうと、0.0.1のリリースを最優先する。
0.0.1が動かないと、その先に進めない。状況を動かせない。0.0.1は自分が使う為のツールであり、デモだ。
テスト駆動開発はクラスのI/Fのスケッチであると同時に、0.0.1より後の開発で、重複コードの削除時の回帰テストの準備でもあるので、捨てられない。