読者です 読者をやめる 読者になる 読者になる

え〜と、DBのとある列にある値に応じて帳票に出力する値を切り替えたいという感じなのですよ。
で、1列だけならまだしも、3列×3パターン、全27パターンが存在する上、特定のパターン同士が同じ処理になる、でも11帳票それぞれでどのパターン同士が同じ処理になるかは変わるので同じクラスで処理出来ません、と言う、if/switchで実装したら多分死ねますパターン?


で、当然ながらストラテジパターン + ストラテジファクトリーでモデリングしたのですが、コレが、クラス構造を実装した段階まではイイ感じだと思っていたのですが、実際にデータをマッピングするロジックを書き始めるとコレが、確かにあらゆるパターンの組み合わせに対応して、列の中で共通した値・列をまたいで共通する値のどれを取得するにもコピペコードなしのユニークロジックの組み合わせで記述できるという実に良い設計なんですが、それをコードに落とそうとすると思っていたより遙かに処理フローが複雑になってて*1、実装作業を分担しようと説明している途中であまりの難解さに説明する方もパンクしますた orz


結局、3×3個のクラスを組み合わせてすべての帳票のマッピングをするのをあきらめて、1つの帳票ごとに3×3個のマッピングクラスを用意してデータの詰め替え処理を行うという、クラスの数は11倍になるけどフローは単純化するモデルで再設計です、ええ。
(現状、1列分のパターンはすべて共通処理。将来的に拡張は確定だけど仕様がまだ全然なので、ええ)

*1:クラスの依存関係は疎であるハズなのに