somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【設計】区分や権限などパラメータの追加

今日から設計をすることになりました。今回の改修では区分と権限を追加することになり、影響範囲がとても広いです。区分と権限の追加はそれぞれ1つずつです。

用途

当たり前ですが、それぞれのドメインにあう処理を行うための分岐に使われます。

追加による影響

実装の仕方によっては、予期せぬことが起きてしまいます。例として、区分1,2,3が存在していて、4を追加します。

if (区分 !== 区分1) { // 処理 }
if (区分 >= 区分2) { // 処理 }

この実装では、区分4の分岐処理を加えることなく処理が実行されます。しかし、区分4の場合には処理を実行したくなかったときに修正を加える必要があります。処理を行いたくないブラックリストを設定するよりも、処理を行ってよいホワイトリストとして分岐を実装したほうが確実というわけです。

また、区分を以上、以下という分岐にした場合も同じです。処理を行ってよいホワイトリストの設定が完全に特定されていないために、ブラックリストの場合と同じ結果になります。

処理を行いたい場合は、改修内容または改修内容による影響として追加する方向で進んでいるはずです。

if (区分 === 区分2 || 区分 === 区分3) { // 処理 }
if (in_array(区分, array(区分1, 区分2)) { // 処理 }

そもそも、ポリモーフィックに作るべきなんでしょうけどね。