ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

マジックナンバーのために出力が正しくない

一覧表を作成してPDFファイルとして出力するプログラムを修正しなければならなくなり、修正をしました。
一覧表が正しくPDFファイルに出力できているか確認すると、追加した行は出力されていましたが、これまで出力していた合計行が出力されなくなっています。

一見すると、修正前と修正後の一覧表の行数が同じになっているため、正しく出力されているように見えました。
正しくは、一覧表は1行増えて出力されなければなりません。

f:id:AJYA:20180704124027p:plain
unsplash-logoWayne Low

マジックナンバーで出力行数を設定していた

ソースコードを確認すると、一覧表を出力する部分で、マジックナンバーが使われていて、出力する行数を固定していました。
マジックナンバー (プログラム) - Wikipedia

PDFファイルの出力を指示すると、プログラムはデータベースから必要な値をデータベースから取得して集計し、出力用のデータとして配列に格納します。
配列に格納されているデータを順番に出力していますが、出力する行数が固定なので、マジックナンバーを使ったようです。

作成した当時は、出力する行数を可変に設定する方法がないと思いこんでいたのかもしれませんが、なんらかの方法はあります。
クラス内でPDFファイルの出力の処理をしていたので、クラスにプロパティを追加して、出力行数を指定できるようにしました。

出力行数を定数として定義して対処する方法もありましたが、一覧表の行のラベル情報を配列に入れていたので、配列数を数えた上で、オブジェクトを生成し、出力行数を指定するようにしました。
今後一覧表の増減があっても、自動で対応できるようになりました。