Enums as configurationは別にアンチパターンでは無いのでは
ちょっと前の記事だけど。
Enums as configuration: the anti-pattern via @jesse_squires
この記事が言いたいのは
- enumでインスタンスの設定をするのは、提供された選択肢から選ぶしか無いので利用者側の自由度が低く良くない。
- ライブラリやフレームワークがそうなっていると、選択肢を増やしたかったらPR投げてマージしてもらわないといけない。
- Swiftのswitch文はenumを網羅しないとコンパイルエラーになるから、あちこちにエラーがでて悲しいからよくない。
ということらしい。
で、以下が僕の主張。
利用者側はおかしなことをするという前提で提供側が想定したパターンしか設定できないenumのほうが安全なような気がするなあ / “Enums as configuration: the anti-pattern · Jesse S…” https://t.co/phDORFzS0N
— ひらり (@hiragram) 2016年8月25日
Swiftのswitchはenumの中身を網羅してないとコンパイル通りませんよってやつは安全装置だと思ってるし、enumにcase足すとswitchが全部コンパイルエラーになるからenumじゃなくてstructを使えみたいなのはちょっと賛同できないなあ
— ひらり (@hiragram) 2016年8月25日
ビューのスタイルの設定をするパターンと、ネットワークの振る舞いを設定するパターンと説明してるけど、前者はstruct(=利用者側にカスタマイズ可能性を残す)でいいと思うけど、振る舞い決める方は提供側が想定してない使い方をされかねないのを考えるとうーんという感じ。
— ひらり (@hiragram) 2016年8月25日
何事も、使う側は常にバカだから提供側はおかしなことをそもそもやれないように作っておくべきなんじゃないのって思う
— ひらり (@hiragram) 2016年8月25日
こっちが提供する選択肢以外に利用側に自由に設定させても良いかなって気分になるのは色ぐらいかなあ。フォントサイズとか太さとかはレイアウト崩れかねないし
— ひらり (@hiragram) 2016年8月25日
僕はパターンを網羅していないとコンパイル通してくれないSwiftのswitchは好きだ。同じ理由でenum使ってswitchするときにdefaultを使うのは嫌いだ。