リファクタリング プログラミング Java

【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定義などを利用し、変更に強い構造にしておくこと。

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-リファクタリング, プログラミング, Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

【Bootstrap】入力フォームを作成しよう!

概要 SpringBootチュートリアルで作成した各画面の入力フォームをBootstrapに置き換えます。 また、containerを使用することで容易にグリッドシステムを導入できます。 実装 検索画 …

VBAが書けるまでにどのくらいかかったか?

これからVBAを学ぼうとしている人向けに参考情報として書きます。 前提 前提として、私の経歴を少し書いておきます。 ・PHPでのWeb開発1年未満 ・Javaの簡易なアプリは作れる ・SQLも理解して …

【Java入門】クラスの基本

概要 以前、クラスとインスタンスの違いでクラスについて簡単に触れました。 ここではクラスの内容を掘り下げて説明していきます。   クラスの構成 クラスの基本構成は以下の3つです。 ・フィールド  :ク …

Eclipseでタブを半角スペースに変換する便利プラグイン!

Eclipseでタブを半角スペースに変換する便利プラグインに、 AnyEdit Toolsというものがあります。 導入方法を以下に記載致しましたので参考にして下さい。   どういうものか? …

【Java入門】クラスの継承、オーバーライド

概要 クラスの継承とは、継承元(親)のフィールド(値)、メソッド(機能)を継承先(子)に引き継がせることです。 継承先(子)では、追加のフィールド(値)、メソッド(機能)を持つことができます。 つまり …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。

サイト内検索