07/09/23 16:12:42
前任者はウンコでした。Excel VBA(Office 2003)なんですが…
・メソッド1つが400行ぐらいあったりする
・If文の山
・エスパーにしか分からない変数の命名
という特徴がソースから読み取れました。
あと、Date型から日付をフォーマットして文字列を返す処理にformat関数を使わずに
何か年・月・日・時・分・秒の文字列を生成し、それを & 演算子で繋いだり、
VBAの知識も浅いのが散見されたり、"のエスケープを知らずにChr(34)を延々と繋いだり…。
見てて痛々しくなってきました。
直属の上司はVBAを知らないので、内部のソースにノータッチです。
スレリンク(tech板:863番)
スレリンク(tech板:865番)
スレリンク(tech板:866番)
みたいな状態ですかねぇ。
機能拡張を求められていますが、そのためにはリファクタリングするしか無さそう。
「クラスモジュール」同士の結合が密なため、疎結合にしないとエライことになりそう。
少なくとも、入力→処理→出力という、構造化プログラミングの王道は知らない模様ですね。
まぁEUC-JPな出力をするために、ADODB.Streamを使っているので、逐次出力は出来ないんですけど。
(ていうかVBAでEUC-JPを出力するのに他の「容易に実装可能な」方法があれば教えて欲しいっす)
あ、私自身はPerl畑出身で、OOPについての理解が浅いのは自覚してます。
片手間でリファクタリングできるか自信は無いですね、はい。
やっつけで、該当する処理部分にIf文を追加して、出力部分に反映させるとか
バータリー指向プログラミングで対処するぐらいしか思いつかない…。