リファクタリング…以前のリファクタ
「どんなやねん」って突っ込まれそうなネタですが。
考察カテゴリなのでざっくりと。
記憶&実戦経験の限りで、とりあえず「目が腐れるほど」惨いソースをリファクタするときって、大体こんな感じでやってたです。
- 共通部品(可能な限りclass 無理なら関数)を入れられる「場所」を作る
Cなら.so取り込むとか、Script系ならincludeで空ファイル読ませるとか。
とにかくまずは「土地を確保」しやす。
- 共通化できる場所に「マーキング」しつつ、土地に誘致
落ち着いてやれば「動いてるサイトをそのまんま」どうにかすることも大体できるです。関数だとちょい大変ですが。クラスなら楽勝かなぁ。
とにかくこのタイミングで「共通化くらい真っ当に」しておきます。
- DBの情報を全部まとめる
具体的には、DAOとか構造体とかdata_clumpとか*1にとにかくまとめます。
一点集中は常に基本です。
特に「SQL発行している部分」が散らかっているのは全力で忌避しませう。
このあたりまでが多分どこにいっても同じパターン。
この後は、状況次第ではあるのですが
- DBの切りなおし
とりあえずview tableとかつかって間を上手くつなぎつつ、「きちゃないDB」を整頓していきます。
- 全体的にきれいなOOに
オブジェクト化しとかないとねぇとりあえず面倒だし色々。
ただ。状況次第なので「必須」じゃぁありやせん。
- テンプレートエンジン導入
実際には「中途半端」「だいだい」「完璧」の3フェーズにさらに別れることが多いのですが。
最終的には「HTML要素を鐚1バイトたりともソースコードに残さない」ほうが、色々と楽です。
- MVC化
Web系なら、MVC化してそんはないです。
とりあえず「C+M+V」の流れで各画面のコードを切り刻んでから。
大抵はVがはじきやすいので、先にVを弾き飛ばして、あとでCを持ち上げるのが楽かと思います。
ここまでくれば、多分見違えるほどの「劇的 before after」になっているはずなので。
…ようやく、ある意味「本当の」リファクタリングが「始められる」です。
ちなみに。デザパタのいくつかは、個人的には「普段はいらないけどリファクタには死ヌるほど便利」だと思ってます。
その辺もそのうち言及してみたいなぁ。
*1:MWにあるお便利クラスの一つ