###前提
Visual Basic.NETで業務アプリを作っています。アルゴリズムの実装で躓いたので、質問させて下さい。
従業員ごとの勤務状態を色分けして表示するアプリを作っています。勤務状態とは残業、出張、有給などです。
従業員全員分の勤怠データがあるものとして、そのデータが上記のどれにあてはまるかを表すアプリです。
勤務データとは社員ID、役職、出社時刻、残業時間などです。
従業員は上級職と一般職に分かれており、役職によってその勤務状態かどうか判断する条件が異なります。
(上級職を有給とみなす条件と、一般職を有給とみなす条件は異なります)
処理の流れとしては、
visual
1select case 勤務データ.役職 2case 上級職 3 if A then return 残業の処理 4 if B then return 有給の処理 5 if C then return 出張の処理 6case 一般職 7 if A' then return 残業の処理 8 if B' then return 有給の処理 9 if C' then return 出張の処理
というように書いています。
残業、有給、出張を判定した後に実行したい処理は、役職にかかわらず同じです。
(表形式で勤務データを表示しており、セルに状態に応じた色を塗ります。)
勤務状況は変更の予定があります。
(Dでも残業とみなす。Eなら午前半休とみなすなど)
追記
A,A'は具体的には Function A as Boolean if 勤務データ. 残業時間 > ◯◯ then return True return False End Function Function A' as Boolean if 勤務データ. 残業時間 > ◯◯ And 勤務データ.勤務コード = ◯◯ then return True return False End Function
というような微妙に違う判定条件です。
###実現したいこと
勤務データ.データ表示()
のような関数を実行すると、データの勤務状況に応じた色を塗るようにしたいです。
また、現在の条件分岐の複雑さを改善し、変更に強く、見通しの良いコードにしたいです。
###試したこと
おそらくStateパターン、strategyパターンあたりを使って実装すると見通しが良くなると思うのですが、
役職のStateを作ってみたのですが、どうしても実現したいことまで思いつきませんでした。
皆さんならどのような実装にするか、ヒントを教えていただけますか?
###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2015,.NET FrameWork 4.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/18 00:07