Java

【Javaサンプル】自動販売機(Level4) ドメイン駆動

投稿日:2020年1月3日 更新日:

前回(Level3)

Level3ではクラス分けすることを行いました。
しかし、私の目指すところのドメイン駆動開発になっていません。
また、ロジックもまだまだ複雑さが残っており、ぱっと見て何をやっているかがわかりにくいコードです。
これをドメイン駆動的な記述に直しました。
 

処理フロー

直すついでに、処理フローをより単純化し、分かり易くなるように修正しました。

・インスタンス生成
・商品リスト初期化(在庫補充)
・商品一覧表示(陳列商品の表示)
・商品選択(ユーザによる入力)
・入金(ユーザによる入力)
・販売(課金処理)
・おつり(返金処理)
 

動作イメージ

 

ソースコード

Qiitaに寄稿致しました。
Javaで作る自動販売機(ドメイン駆動)
 

なぜドメイン駆動か?

これは私の個人的な考えです。

仕様の明確化

 サーバサイド(業務ロジック)のコーディングスキルは、
 ドメイン(業務)に合うように記述すべきときが来ている。

 コードを見て仕様がわからないし、
 重複する箇所があれば修正は面倒この上ないことはすでに自明となっている。
 

保守性の向上

 実際、前回の炎上プロジェクトでは同じロジックをコピペで3つの別々のクラスに書いた!
 これは絶対に保守性を下げるし、
 何らかの改修が入ったら仕様をしっている人以外は絶対にわからない!

 受託元の独自FWの仕様と時間的制約から難しかったため断念したが、
 共通クラスを作成して、メソッドに切り分けるべきだった。

仕様の齟齬を解消する

 実装者がユーザに仕様をヒアリングできるのが当たり前になるべきだ。

 仕様を確認した者が設計して、それを見て実装するのが当たり前だったが、
 設計書の記述誤りや、設計漏れが出てくるのも当たり前である。
 
 ヒアリングしたあとにすぐに実装して動いているものをユーザに見てもらえば、
 設計は不要になる。(コードが仕様になるからだ!)

ユーザ満足度の向上

 上記で述べた、実装とユーザ要求の齟齬が無くなることはユーザ満足度に直結する。
 そして、実装者は誤った設計書を見て頭を悩ませなくなくて済むため、作業効率が上がる。
 一石二鳥ではないか!

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

ランキング評価する

-Java
-, ,

執筆者:


comment

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

CAPTCHA


関連記事

【SpringBoot入門】#9~ 更新画面の作成

左側のコンテンツ40% 右側のコンテンツ60% ※2021/01/09  画面遷移等のバックエンド側の内容が抜けていたので追記しました。 概要 検索結果一覧から編集ボタン押下で遷移してくる更新画面です …

【Spring+Thymeleaf】HTMLの更新をビルドせずに反映させる方法

概要 Spring + Thymeleafの構成において、ビルド無しでHTMLの変更を反映する方法です。 前提 以下の構成で確認したものになります。 ・SpringBoot 2.6.4 ・Thymel …

Springメモ(あれ、どうすんだっけ?)

@Autowiredアノテーションをつけることができる箇所(3つ) ・フィールド変数 ・コンストラクタの引数 ・setterの引数 ※引用 【後悔しないための入門書】Spring解体新書: Sprin …

【SpringBoot入門】#3~ Index画面の作成

このチュートリアルでは、簡易な書籍管理システムを作っていきます。 まず最初にIndex画面を作成していきます。 HTML作成 以下の配下にindex.htmlを作成します。 配置先:プロジェクト(ここ …

【Java】画像ファイルをバイナリで比較する方法

  画像ファイルの比較 比較元ファイル 素材はPhotoACから拝借しました。 コピー元画像:PCを持つ女性 コピーしたファイルとの比較(True) コピー元ファイルをコピーしただけのファイ …

■運営者プロフィール
IT業界10年のエンジニア。
PHP -> VBA -> Javaと渡り歩いてきて、今はJavaをメインにフリーランスエンジニアとして活躍中!

[保有資格]
・Java SE 11 Gold

一度はエンジニアを辞めざるを得なかった私が再びエンジニアとして復活した数奇な物語

SpringFramworkの良書

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

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