今日も今日とて、他人支援が半分くらい。
過去の業務にかまけていたら、
ほかの業務のプログラムがまた過去の遺産を引き継いでいた。


銀行マスタ検索。
カナ検索するのに半角カナと全角カナと全角ひらかなを引っ掛ける必要ありますか?
いや、ない。
あるわけがない。
テーブルの項目名と一致してない。
百歩譲っても、半角カナか全角カナの両方くらいだ。
でもそれでもアホみたいだ。
仕様がおかしい。
テーブル設計が練れてない。
なんで登録するときに両方入れててしまうんでしょうか。
そんな必要はあるなら言ってみろ。
( ´∀`)<いや〜。登録されることもあるかもしれないでしょ。
って意見はもう聞き飽きたからほかのでよろしく。


大体は半角カナで事足りる。
ってか登録するときにはそのくらい変換かけれ。
カナにかなが入れられても、それくらい登録時に変換かけれるやろ。
そうして全角なり半角カナに置き換えることができるのだ。
事前に行う準備さえ整っていれば検索用のプログラミングはめっちゃ簡単なのだ。


前方一致のSQL文でいうと

String strKey01 = entity.getKey01();  // 半角カナ
String strKey02 = entity.getKey02();  // 全角カナ
String strKey03 = entity.getKey03();  // 全角かな

〜中略〜

// where句作成
strbSQL.append( "where " );
strbSQL.append( "( 銀行名カナ like '" + strKey01 + "%' or " );
strbSQL.append( " 銀行名カナ like '" + strKey02+ "%' or " );
strbSQL.append( " 銀行名カナ like '" + strKey03+ "%' )" );

ってやつが

String strKanaKey = entity.getKanaKey();  // 半角カナ

〜中略〜

// where句作成
strbSQL.append( "where " );
strbSQL.append( " 銀行名カナ like '" + strKanaKey + "%' )" );

っとなる。
前者はなんともアホっぽい。


そんなアホっぽいソースが実在していたのだ。
5年も前に作られていたっっ
(n´Д`)η<うきーーーーーー


っというやつが今回コピーされて使われかけていた。
(..゜Д゜)<即刻変えなさい。


もちろん。
仕様確認をデータ内容も調査の上、担当の設計者と行った。
そしたら
( ´∀`)<半角カナだけしかないのでそれでいいっすよ。


という言葉がいただけた。
前者を使う意味も意義もこれでまるでなくなった(゜Д゜)!!
っという事実をもとに、作成担当者に働きかけた。
そして直した。
よりシンプルに。高速にがモットーです。(・_・)
変な条件のSQLなど見るに耐えません。ヽ(´ー`)ノ


ってなことを小一時間やっていたらソースができた。
ペアプログラミング万歳。


シンプルなソースはジェネレータで起こせる。
そういうジェネレータはすでに作ってある。
また、ジェネレータで起こしたソースは項目名以外はテスト済みのコードである。
そういうジェネレータなのだ。
こうなればテストにかける時間も少なくていい。
そうすると、解析からデータベースアクセス部品を作り、テストするまでのトータル時間の削減になる。
もちろん品質は高い水準を守ったままで〜である。
へんなもんをコピってへんなもんを増やし、
へんなもんに惑わされながら、怪しげなテストを行う必要などなくなるのだ。
ってかそんなことすんな( ・ω・)oビシッ
ってことを今回伝えれてたらいいな〜としみじみ思う。
(´-`).。oO(次回が見ものだな。)