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

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

一度考えて、改めて考えて納得するけれど、手間がかかっている

システムに新しく休日を保持するテーブルが追加されました。
休日として操作されたら日付のレコードが追加され、休日でないとして操作されたら日付のレコードが削除されます。
このテーブルのデータを元に、ある日付が稼働日なのか休日なのか判定を行います。

・日付を添字とした配列を用意する。
・すべての日付を稼働日として初期化する。
・休日を保持するテーブルから取得した日付を、休日として設定する。
という流れで処理すれば、配列を参照して、どの日付が稼働日で、どの日付が休日なのかわかります。

考え中
unsplash-logoJason Strull

もっと手順を減らせないのか?

上記の手順で最初は作り始めました。
作りながら、元々のテーブルが休日だけレコードを保持しているので、休日だけ日付があれば、判断できるのではないかと思いました。

少し考えた結果
・日付を添字とした配列を作成するが、存在するのは休日を保持するテーブルから取得した日付のみにする。
・配列を参照して、日付の添字の要素が存在しなければ、稼働日と判断する。
・配列を参照して、日付の添字の要素が存在すれば、休日と判断する。
とすれば、全ての日付を稼働日として初期化する必要はなくなりました。


最初からテーブルが保持しているレコードのデータに合わせて考えれば済むのですが、なぜか手間がかかる方向に考えてしまいがちです。
ついつい、稼働日と休日の両方を保持していた方がいいだろうと考えていました。
最初に考えたうえで、改めて考えることで、これでいいのだと納得はできるのですが、手間がかかっています。
手間がなく、目的を果たせるように考えていかなければなりません。