[B! Enum] Enumとてもつらい、でも負けない - エムスリーテックブログ

    記事へのコメント48

    • 注目コメント
    • 新着コメント
    オーナーコメントを固定しています
    Sampo
    オーナー Sampo これは流してきた血の涙の記録

    2023/12/06 リンク

    その他
    vermeer-1977
    vermeer-1977 1. 分岐条件をEnumに持たせる については、EnumSetをつかえば、上記の条件分岐毎ののtrue,falseを準備するよりは扱いやすくなるかな?と思った次第 参考URL https://qiita.com/suke_masa/items/bd242617a2b9bb773cbd [上級編]EnumSetの利用

    2023/12/20 リンク

    その他
    yarumato
    yarumato “種別が3種類以上の可能性があるならEnumを使うことになる。将来的に増えること、これがEnumの つらみの根源です。既存のif文が意図しない方に倒れる。データ分析のことまで考慮した対策:Enum要素は増やさない”

    2023/12/17 リンク

    その他
    YaSuYuKi
    YaSuYuKi Switch式が使えるということは14以上、サポートを考えると現実的には17以上だろうから、Sealed class/interfaceを使えば良いのでは。switchでもパターンマッチングで書けば通らないパターンがあるとコンパイルエラーになる

    2023/12/12 リンク

    その他
    tsutaya0225
    tsutaya0225 既出表現だが、elseとdefaultは必ずエラー処理とすれば、単独if以外は100%カバレッジできて防御的プログラミングとなり得る訳で、論点がまるで明後日の方向を向いてる。 そのため"だけ"にenumをclassにするとかもあり得ない。

    2023/12/08 リンク

    その他
    daishi_n
    daishi_n enumをクラスの中に納めて見えないようにする局所化には必要だよね。プロパティでenum値を返すのではなく、enumに基づいた属性情報を返す方が適切かな。この手のだと認可系は今でもどう実装すべきか悩ましい

    2023/12/08 リンク

    その他
    nak1114
    nak1114 みんな言及してるけど普通にクラス使えって話だよね

    2023/12/08 リンク

    その他
    dorapon2000
    dorapon2000 “switch式とはswitch文をベースにしつついくつかの点で強化された複数分岐構文なのですが、中でもswitch文と違って網羅性チェックをしてくれるという大きな特徴があります。”

    2023/12/07 リンク

    その他
    kndkndknd
    kndkndknd はい

    2023/12/06 リンク

    その他
    cbkf
    cbkf 仕事で書くコードなら普通 default で処理漏れ拾って「バグだよー」って例外投げると思うのだけど。そしたらテストで検出できる。/「カバレッジ100%はあり得ない」って、ここはカバー必須でしょ

    2023/12/06 リンク

    その他
    ma38su
    ma38su ランタイムエラーの前にコンパイルエラー出るとこ直せばよいでしょうよ。defaultで下手にランタイム出るのはむしろ困るんじゃ?

    2023/12/06 リンク

    その他
    daichirata
    daichirata 分析用の SQL への反映が辛いという話は非常によくわかるが、だからといって dbt とかではなく enum 側を増やさないで対応するのは本末転倒というか分岐の位置がズレただけな気も。言語の話はおまけっぽい。

    2023/12/06 リンク

    その他
    yuutetu
    yuutetu goだとゼロ値を用意しておいて、ゼロ値をswitch文のdefaultで処理する。 TypeScriptだと(ユニオン型だが)全てswitch文で処理してdefault内ではNever型になっていることをチェックしつつassertしとおくと良い感じ。

    2023/12/06 リンク

    その他
    miki3k
    miki3k Enumの中身を変えることは、別のデータ型を作っていると同じ

    2023/12/06 リンク

    その他
    ene0kcal
    ene0kcal enumを使ってる以上、全てのenumのswitchやif文を検索して改修対象か調査すべきでそれを忌避したいならOOPで各要素をclassでまさに"分類"として定義し多態性を使利用したシステム設計をすべきでは?/既にブコメに同じ指摘が

    2023/12/06 リンク

    その他
    ghostbass
    ghostbass ステートパターンとストラテジーパターン組み合わせたとてそういう変更要件への対応が楽になるわけでもなく…結局はドメイン次第になるのでは。const int だと多分もっとつらいことになる

    2023/12/06 リンク

    その他
    letsspeak
    letsspeak 設計の問題っぽい

    2023/12/06 リンク

    その他
    PrivateIntMain
    PrivateIntMain モデルのEnumがモデル外で直接参照できるようになっているのが間違いじゃなかろうか。モデル外で知りたいならモデルを介して聞くしかできないのが望ましい。まあその状態を保つのはめんどくさいけど。

    2023/12/06 リンク

    その他
    yojik
    yojik もうここまでやるならクラスつかってもよいのでは。

    2023/12/06 リンク

    その他
    Flume
    Flume Enumの辛さではないような.../intよりマシって意見多いみたいで確かにそれが正しいと思うけど、個人的にはintの方が好き。俺が苦手なだけだがEnumってなんとなく分かりづらいのと属性毎にクラス作るのが嫌

    2023/12/06 リンク

    その他
    canadie
    canadie これをEnumで実装するのは開放閉鎖の原則(OCP)違反。ちょうどいい例があったから読んでみて https://gntk.dev/post/20210916-learn-solid-principle-ocp/

    2023/12/06 リンク

    その他
    xlc
    xlc Pascalで育ちAdaの仕事もしたので元々は型にうるさい考え方だったけど、PerlやJavaScriptと長く付き合ううちに列挙型はクソと思うようになりました。拡張性がないよね。DOMのイベントにも列挙型は使われないでしょ。

    2023/12/06 リンク

    その他
    izoc
    izoc Javaは良く知らんがEnumは列番号に名前を付ける感覚で判定値としては使わんなあ。クラスとか連想配列使った方が良くない?って感想

    2023/12/06 リンク

    その他
    kkobayashi
    kkobayashi それはもうEnumじゃなくてクラスにするべきでは

    2023/12/06 リンク

    その他
    NOV1975
    NOV1975 defaultに落ちたらダメなレベルの全てのロジックにおいて重要な属性のバリエーションが追加されてる例だとそりゃ全部直す「べき」だし直すべきじゃないなら追加する箇所が間違ってるよ。

    2023/12/06 リンク

    その他
    dekaino
    dekaino 分岐条件なら、enumの型はintとして分岐条件の配列リスト作ればいいんじゃないのかなあ? if (condArray[enum_AA]) xxxx とかする。condArray[]の定義なり初期化するところを1か所にまとめておけばよし。

    2023/12/06 リンク

    その他
    queeuq
    queeuq switchもdafaultがないことを指摘すべきだし、大抵のよく使われる規約はそうなっている。カバレッジ100%にはならないとか書いてるがそれ今回実装が必要な正常系処理なのに漏れるの?テスト方針を見直すべきでは?

    2023/12/06 リンク

    その他
    strawberryhunter
    strawberryhunter 条件分岐とか状態とかが辛いのはわかる。enumが悪みたいな書き方は経験値が足りないからだ。

    2023/12/06 リンク

    その他
    Bookmarker
    Bookmarker また同じような記事。流し読みしただけだが、ちゃんとオブジェクト指向設計しろという話では?

    2023/12/06 リンク

    その他
    watchcat
    watchcat 要素はclassにしてそっちに処理書けば新しく増えても安心よ。Factoryとか。

    2023/12/06 リンク

    その他
    rck10
    rck10 逆にenum使わずにclassでデザインしたら綺麗にできるの?そうでないならenumの辛みではない。 / 基本的には属性値として使うべきで、属性の保有者として使うとロジック過多で痛い目をみるイメージがある。

    2023/12/06 リンク

    その他

    注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

    アプリのスクリーンショット
    いまの話題をアプリでチェック!
    • バナー広告なし
    • ミュート機能あり
    • ダークモード搭載
    アプリをダウンロード

    関連記事

    Enumとてもつらい、でも負けない - エムスリーテックブログ

    列挙型、JavaでいうならEnum型、使っていますか。使わないわけにいきませんよね。 でも、Enumを使ってい...

    ブックマークしたユーザー

    • techtech05212024/06/22 techtech0521
    • shunmatsu2024/02/27 shunmatsu
    • knj29182023/12/24 knj2918
    • vermeer-19772023/12/20 vermeer-1977
    • k_wizard2023/12/19 k_wizard
    • yarumato2023/12/17 yarumato
    • bismus2023/12/17 bismus
    • mapk0y2023/12/16 mapk0y
    • YaSuYuKi2023/12/12 YaSuYuKi
    • zope2023/12/12 zope
    • hikkybass2023/12/10 hikkybass
    • parasporospa2023/12/10 parasporospa
    • sanko04082023/12/09 sanko0408
    • tsutaya02252023/12/08 tsutaya0225
    • t_kasamatsu2023/12/08 t_kasamatsu
    • daishi_n2023/12/08 daishi_n
    • thaturn2023/12/08 thaturn
    • nak11142023/12/08 nak1114
    すべてのユーザーの
    詳細を表示します

    同じサイトの新着

    同じサイトの新着をもっと読む

    いま人気の記事

    いま人気の記事をもっと読む

    いま人気の記事 - テクノロジー

    いま人気の記事 - テクノロジーをもっと読む

    新着記事 - テクノロジー

    新着記事 - テクノロジーをもっと読む

    同時期にブックマークされた記事