うちの日記は、僕がPHPを勉強したほぼ初期のプログラムなので、だいぶ汚いんですね。
一応、一度軽くリファインはしましたが、やはり構造上の欠陥を抱えてるんですよね。
とにかく全体的にスパゲッティプログラムなので、メンテナンス性が最悪なんですよね。新しい機能を追加しようと思うといちいち変なことしなくちゃいけない。
みてください、この糞コード・・・・・・。メンテナンス性の欠片もありません・・・・・・。
後から後に、あっこれ必要かも!みたいな変数を無理やり定義してみたり、あとタイムスタンプ型という存在を知らないまま作った、日数計算処理関数がひどいことになってます。
そこで、7月中を目処に、再構築したいんですよね。全てをクラス化して、日記の記事それぞれをインスタンスにしてしまおうか、とね。
プログラムを知らない人のために、
インスタンス化することのメリットを簡単に解説しますね。
例えばこの部分。画像を表示させるコードの部分ですね。編集性を持たせるため、全てではなくsrc部分のみphpで出力してます。こいつをマクロとして登録することで半自動的に画像ファイルへのパスが挿入されることになるんですね。今考えたらなんで引数でインクリメントしてないのかが謎ですけど(笑)
「相対パスのヘッダー」「年月日」「通し番号」「ファイル形式」「表示サイズ(横幅)」の、計7つの引数を持つ関数を呼び出しているわけですが、インスタンス化するとこれをもっとスマートにできます。
というのも、
「相対パスのヘッダー」「年月日」「通し番号」の3つは"その記事で独立して持つことができる情報"なので、オブジェクト独自の変数・・・・・・まぁいわゆる
メンバ変数として、記事自体に紐付けができるんですね。
手続き型プログラミングだと、日記記事の年月日なんかをグローバル変数化できないのでこうやって引きずり回すしかないんですが、オブジェクトにすると、その記事固有の変数というのを容易に定義し、あとは呼び出し元のオブジェクトを変えるだけで、違う日の記事であっても、同名のメソッドで同じ動作ができるようになるわけですね。
まぁもっと言うと、
実は「ファイル形式」も要らないんですけどね。これはオブジェクトとか関係なくて、通し番号さえわかれば後はファイル検索を行えば一意に定まるから、そこから持って来ればいいじゃん、ということになります。
まぁ、完成形のイメージとしては・・・・・・
<?php $count++; echo img($u_h,$d_y,$d_m,$d_d,$count,'png',0);?>
を
<?php img(0);?>
に、書き換えたい
|
という旨になります。通し番号もインスタンスの変数とすることで、内部操作が可能になるのでいちいち引きずり回す必要ないんですね。ね、便利そうに見えません?
実際メンテナンス性は上がりそうですよね。
ただ、相対パスのヘッダー
(※トップページと日記ログで同じ階層を指すための変数)に関してはどうしたものかって感じはしますけど、これはコンストラクタ実行時に指定すればたぶんクリアできるんですかね・・・・・・?
まぁそんな感じのことをして、この頭の部分ももうちょっとスッキリ書き換えたいなって思ってます・・・・・・。
こんな感じのことをしたい、って計画があるってだけなんですが、現状特に困ってるとかじゃないので7月末までにできたらなー程度の気持ちなんですけど、もしかしたらやらないかもしれません(笑)