Javaの基礎とオブジェクト指向を学ぶために作成した銀行システムです。実務で必要なエラー処理の練習を兼ねて作成しました。
コンソール上での対話的な操作と、CSVファイルを使ったデータの読み込み・取引実行ができるシステムです。
一番こだわったのは、想定外の入力やデータがあってもシステムが止まらないようにすることです。
-
エラーへの対応 CSVを読み込む際、項目が足りなかったり数字に文字が混じっていたりしてもプログラムが落ちずに適切にエラーを表示して中断するよう、try-catchでの例外処理を細かく入れました。
-
コードの整理(カプセル化) 口座のデータを持つクラスと、入出金の計算をするクラス、表示を管理するクラスを分けています。特にお金の計算については勝手に残高を書き換えられないよう、設計を工夫しました。
-
管理のしやすさ メッセージやファイル名などを一箇所で管理するクラスを作り、後から修正しやすいようにしています。
- Account:口座のデータ(名前や残高)
- Bank:入出金のロジックや、重複しない口座番号の発行
- Transaction:取引履歴の保持
- BankConsoleOperation:コンソールでの操作画面
- BankCsvOperation:CSVファイルからのデータ読み込み
- Constants:設定値やメッセージの管理
- Main:プログラムの実行入り口(CSV操作の呼び出し)
一通り動く形にはなりましたが、コードを見直して以下の部分を改善したいと考えています。
- 重複コードの整理 コンソール操作とCSV操作で似たような検索処理があるので、共通化する。
- テスタビリティの向上 ロジック部分を更にわかりやすく分離させ、メンテナンス性を上げる。特にCSV版を追加機能として実装したため、整理する予定。
今はJavaで学んだロジックをベースに、ReactやTypeScriptを使ったフロントエンド開発も進めています。