たとえば固定フォーマットの定型ファイルを出力するプログラムを作るとする。
レイアウトがあって、桁数があって、データの取得元があった上で
プログラミングがはじまるのだが、どう形作られるもんなんだろ。


ってのを今目の前のソースを眺めながら思い返している。


構造化がなされておらず、
クラスの中のメソッドのどこかでたまたま偶発的に作られるファイル。
桁数以上の値を入れたときに、フォーマットがずれるからなんでかなーって調べてみたら、
足りないときにはスペースを足していたけれど、越えていたときにはなんにもしていなかった。

・・・・(前略)・・・・

int intLength = 20;  // ←項目の桁数と思いねぇ
strbResult.append( strValue + Space( intLength - strValue.length() );

・・・・(後略)・・・・

ってな具合になっていたときに、修正するべきはどういう姿が美しくかつ効率的だろうと僕は思った。


ちなみに自分では定型ファイルに対して入出力を行う専用のクラスを作り、
その中でなんとでも出来るようにしてある。

myLengths length = new myLengths();  // ←各桁数の長さを定義した構造体とでも思いねぇ
FormatUtil fu = new FormatUtil();   // ←桁数や右詰左詰などを行うためのユーティリティだと思いねぇ

・・・・(中略)・・・・

strbResult.append( fu.ToStr( strValue, length.ItemName() ) );

この形をつくって置けば問題点と修正点で悩むことなどない。
 ・桁数が違う
    → myLengthsの該当項目を調査 → 桁数設定を修正
 ・フォーマットがずれる 
    → fu.ToStrメソッドの中を調査。指定の桁数を死守するように修正
ってな具合になれる。


前者はなんとなく処理を書いていけるので、作る時に楽であり、
後者は構造を設計してからつくるので、作るときにちょっぴり手間がかかるけれど、修正する時に楽である。