質問編集履歴

1 タイトル一部修正

HelloWorld2

HelloWorld2 score 24

2019/05/07 16:08  投稿

【オブジェクト指向】クラス設計で、インスタンス変数にするか、戻り値にするか
【オブジェクト指向】クラス設計で、インスタンス変数にするか、戻り値にするか
# 処理概要
- APIを実行してデータを取得し、2つの異なる格納先にInsertします。(DBと別のストレージ、具体的にはAzureのTableStorage。ストレージはバックアップ用)
- APIは複数回実行するため、「API実行→DB用エンティティ作成・リストに追加→ストレージ用エンティティ作成・リストに追加」の処理をすべて実行した後、最後に2つのリスト内のエンティティをループしてInsertします。(コネクションを1回にするため)
# クラス
作成するクラスは以下を想定します。(下記の質問で一部まとめたりしています)
- 呼び出し元クラス(コントローラ)
- API実行クラス
- DBエンティティ作成クラス
- ストレージエンティティ作成クラス
- DBInsertクラス
- ストレージInsertクラス
# 質問内容・シーケンス図
試行錯誤して、いくつかシーケンス図を作ってみましたが、何がベストプラクティスかがわかりません。
- リストを保持すべきクラスはどこでしょうか?(コントローラか、エンティティ作成クラスか、Insertクラスか)
- API実行、DBエンティティ生成、ストレージエンティティ生成の呼び出し元はどこが良いのでしょう?(呼び出しは依存させた方がよいのか、させない方がよいのか、実行順序が重要な場合は依存させた方が良い・・・?)
- 各エンティティクラスのinデータはJSONデータがよいのでしょうか?(同じようなJSONデータの取り出し処理をするのは嫌だなぁという感覚です)
- エンティティ生成と登録処理は、同じクラスがよいのでしょうか?(凝集性的には同じクラスが良いと思いますが、単一責任原則的には別の方が良いのかなと。また、エンティティ作成処理は20~30行の処理なので、行数的にも分けた方が良いのかなと)
![イメージ説明](469f7a5546f8759d429502bd605a0d6f.png)
![イメージ説明](e400e875ca5db3827110da3f8e861435.png)
![イメージ説明](6e40f66abf6ee8d244b32290bc43c6f9.png)
(一番下のシーケンス図が良いのかなと考えています)
# その他
これが絶対に正解!というものはないかもしれませんが、一般的に良いとされる設計がどのようなものか、知りたい次第でございます。煩雑で申し訳ございませんが、よろしくお願いいたします。
  • C#

    12552 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • オブジェクト指向

    461 questions

    オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る