enum ( Java )の設計方法


年間を通して、私はJavaで多くのenumsを見て、つくりました.いくつかは非常に有用だった、いくつかのハードコードといくつかの悪いもののビットを避けた.
これは非常に悪いenumデザインの例です.私は他の誰かを非難していません、私はこれに貢献者でした.しかし、私の防御で、私はその時初心者でした.見てみましょう.
public enum EventStatusType {
    /**
     * event is processed {0 value in database}
     */
    PROCESSED,
    /**
     *  event is not processed {1 value in database}
     */
    UNPROCESSED,
    /**
     * event is now running {2 value in database}
     */
    IN_PROGRESS,
    /**
     * event has failed {3 value in database}
     */
    FAILED
}
まず第一に、名前は何ですか?それはステータスかタイプのどちらかです、この場合、それは地位です、したがって、EventStatusはより良い名前です.
その後、Javadocになる.彼らは何も説明していない.例えば、イベントがin progressであることを意味する例を説明する代わりに、彼らは価値の繰り返しです.また、データベースの中で何を表現するかは全く役に立たず、冗長であり、さらに不適切です.ENUMを使って作業していて、データベースで自分の序列でそれらを保存しているので、彼らはどのように働くかを知っているべきです.我々の実体で使われるタイプをStringに変えるならば、我々はenumのためにjavadocを変えることを強制されてはいけません.
このenumの他の全く迷惑なことはその命令です.イベントの状態を確認するためにデータベースを見るときは、0123のステータスを持つレコードがいくつかあります.あなたの直観は0が基本値であると言います、そして、イベント状態は12(または3)に動きます.そして、あなたは間違っている.基本値は1で、2に移動し、最終的なステータスは0または3です.非常に直感的.
このコードで言及された問題に注意して、読みやすさとメンテナンスの容易さを改善します.
これ以上の提案はありますか.それを私と共有してください.