gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

リファクタリング…以前のリファクタ

「どんなやねん」って突っ込まれそうなネタですが。
考察カテゴリなのでざっくりと。


記憶&実戦経験の限りで、とりあえず「目が腐れるほど」惨いソースをリファクタするときって、大体こんな感じでやってたです。

  • 共通部品(可能な限りclass 無理なら関数)を入れられる「場所」を作る

Cなら.so取り込むとか、Script系ならincludeで空ファイル読ませるとか。
とにかくまずは「土地を確保」しやす。

  • 通化できる場所に「マーキング」しつつ、土地に誘致

落ち着いてやれば「動いてるサイトをそのまんま」どうにかすることも大体できるです。関数だとちょい大変ですが。クラスなら楽勝かなぁ。
とにかくこのタイミングで「共通化くらい真っ当に」しておきます。

  • DBの情報を全部まとめる

具体的には、DAOとか構造体とかdata_clumpとか*1にとにかくまとめます。
一点集中は常に基本です。
特に「SQL発行している部分」が散らかっているのは全力で忌避しませう。


このあたりまでが多分どこにいっても同じパターン。
この後は、状況次第ではあるのですが

  • DBの切りなおし

とりあえずview tableとかつかって間を上手くつなぎつつ、「きちゃないDB」を整頓していきます。

  • 全体的にきれいなOOに

オブジェクト化しとかないとねぇとりあえず面倒だし色々。
ただ。状況次第なので「必須」じゃぁありやせん。

  • テンプレートエンジン導入

実際には「中途半端」「だいだい」「完璧」の3フェーズにさらに別れることが多いのですが。
最終的には「HTML要素を鐚1バイトたりともソースコードに残さない」ほうが、色々と楽です。

Web系なら、MVC化してそんはないです。
とりあえず「C+M+V」の流れで各画面のコードを切り刻んでから。
大抵はVがはじきやすいので、先にVを弾き飛ばして、あとでCを持ち上げるのが楽かと思います。


ここまでくれば、多分見違えるほどの「劇的 before after」になっているはずなので。
…ようやく、ある意味「本当の」リファクタリングが「始められる」です。


ちなみに。デザパタのいくつかは、個人的には「普段はいらないけどリファクタには死ヌるほど便利」だと思ってます。
その辺もそのうち言及してみたいなぁ。

*1:MWにあるお便利クラスの一つ