命名ルールの変更
某システムの拡張が発生した。もともとはひとつのビルにある複数の事務所が監視の範囲だったので、それを前提に各オブジェクトの命名ルールを作っていた。しかし、今回の拡張で他のビルにある事務所も監視することになった。命名ルールが破綻した。
システムの設定を自動生成するプログラムがこの影響を受けた。命名ルールでは事務所名の先頭の1文字をその事務所内のオブジェクトの先頭につけるようにしていた。
char c = office.getName().charAt(0); if (target.getName().charAt(n) == c) { // その事務所にある場合の生成処理 }
命名ルールを期待して、オブジェクトの名前の n文字目をキーにして設定を自動生成していたが、この命名ルールが破綻したために設定を自動生成するプログラムを作り直すことになった。
事務所の名前と、その事務所内にあるオブジェクトをファイルに定義して、どのオブジェクトがどの事務所にあるのかを対応付けられるようにした。
if (office.contains(target)) { // その事務所にある場合の生成処理 }
前よりすっきりした。(^^)