【Java】Enumを使って変更に強いコーディングをする!

当ページのリンクには広告が含まれています。
目次

概要

仕事でコード値の判定が色んなところに散らばってしまった後に、コード値の定義を変更しなければいけなくなった状況が起こりました。
Enumで定義していれば変更箇所はEnum定義だけでよかったなぁ~と思い、自戒の意味を込めて執筆致しました。

状況

  • 「なんちゃら種別」のような種別コード値と名称が複数定義されている
  • その定義の中に、「3:その他」が最後に定義されていた。
  • 新たに追加されることになった種別コードは「3」を使いたい。
  • そのため、「その他」は今後さらにコード値が追加されることを考慮して、
    「99:その他」にしたい。

実装

問題のあるコード

SalesOrderMain.java
アプリケーションのエントリーポイント(実行開始メソッド)

実行結果
一応ハードコーティングとEnum定義での両方でロジックが通っています。

if(3 == otherOrder.saleKindCode())
しかしここがハードコーディングになっているので、コード値の修正に対応していません。

SalesOrder.java
売上種別コードを持つオブジェクト

SalesKind.java
販売種別=3(その他)が定義されている状態

 

Enum定義で解消したコード

SalesOrderMain.java
アプリケーションのエントリーポイント(実行開始メソッド)
SalesOrderのインスタンス生成時の売上種別を99に変更しています。

 
実行結果
Enum定義で判定していたロジックのみ通っています。

if(3 == otherOrder.saleKindCode())
ここはハードコーディングしていたため、修正しなくてはならなくなりました。

SalesOrder.java
売上種別コードを持つオブジェクト
修正箇所は無いため割愛

SalesKind.java
販売種別=99(その他)に定義し直した状態

 

まとめ

  • コード値の判定ロジックはEnum定義などを利用し、変更に強い構造にしておくこと。

最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰しました。
復帰前は開発未経験でしたが、独学した知識と面接時のコミュニケーション力で見事開発エンジニアとして復帰しました!
今はフリーランスエンジニアとして仕事をしています。

■保有資格
・Java Gold SE 11

コメント

コメントする

CAPTCHA


目次