読者です 読者をやめる 読者になる 読者になる

UIでの入力時、「[____]/3/31時点」って表示して内に年を入力させるのですが、処理自体は「年度」単位なのでに入力した年-1が処理対象年度になるんですよ。
普通は、処理年度をUIから取ってきて処理に引き回す変数に格納する時点でUIから入力した数値-1を格納するのが常識なんですよ。


‥‥、仕様書に

「日付入力で入力した年-1の年度に該当すれば○○○の処理」

とか書いてあるんですが、バカ正直に

UIでの入力値を引き回して、実際の計算時点で毎回「入力された年-1を対象年度にする」

というトンデモなコーディングしているせいで、リファクタリングで出来た新しいクラス20個に渡ってこの恐ろしい処理を埋め込む必要があるというね orz
#クラス構造はリファクタリングで再設計したんだけど、値の計算そのものについては過去のコードそのままコピペしただけなので、「処理年度」の仕様を変えるとどこで影響が出るかワカランのですよ。


大体、年度計算って業務用アプリであればどんな小さいシステムでも必要になるので、真っ先に共通ライブラリ化されているのが当然だと思うのですが、リファクタリング前の段階であらゆる場所に、

Dim dtFrom As Date = CDate(CStr(iYear - 1) + "/4/1")
Dim dtTo As Date = CDate(CStr(iYear) + "/3/31")

とかまったく抽象化せずにばらまいてあるのを発見して目眩が‥‥
あ、一応、期首日付やら期末日付はその場で共通ライブラリ化したケド、年度の引き回しはどうにもならん。