ktaroabobon / abobon-jr

0 stars 1 forks source link

Clean Architecture に倣い、より可読性を上げる #37

Open SenruoYusei opened 5 months ago

SenruoYusei commented 5 months ago

この issue は #36 の完了後に取り組むべき Issue です。

1. As Is (#36 完了後)

2. To Be

3. アクション

4. 課題

ktaroabobon commented 5 months ago

31 のレビューでクリーンアーキテクチャに書き直して欲しいっていうレビューしちゃった〜〜〜

それは一旦こっちで持つ?> クリーンアーキテクチャへの改変はこのIssueの責務です

ktaroabobon commented 5 months ago

こっちでクリーンアーキテクチャへの改変は行います

ktaroabobon commented 5 months ago

Issue Overview

現在の実装では、すべてのロジックがController層に集中しており、これをクリーンアーキテクチャの原則に則って再構成することを目指します。この改変は、RSS取得機能だけでなく、既存のping-pongコマンドにも適用されます。このIssueの目的は、機能の動作が確保される状態を維持しつつ、コードをより管理しやすく、将来の変更に対応しやすい構造に改善することです。

Proposed Directory Structure and Files

提案されるディレクトリ構造と主要なファイルは以下の通りです:

/app
  /domain
    /entities
    /interfaces
      rss_retriever.go          # RSSデータ取得のインターフェイス
      command_handler.go        # コマンド処理のインターフェイス
  /usecases
    /interactor
      rss_interactor.go         # RSS取得のユースケースを実装
      ping_pong_interactor.go   # ping-pongのユースケースを実装
  /adapters
    /controllers
      rss_controller.go         # RSS取得コマンドのコントローラー
      ping_pong_controller.go   # ping-pongコマンドのコントローラー
    /repositories
      rss_repository.go         # RSSデータソースのリポジトリ実装
  /infrastructure
    /api
      rss_api.go                # 外部RSSフィードAPIとの通信を扱う

Responsibilities and Dependencies

各層は以下の責務を持ち、次のように依存関係が構成されます:

File Descriptions

この構造と分割により、各機能が独立しているため、将来の拡張や変更が容易になります。また、各層が独立しているため、テストや保守がしやすくなります。この構造に基づいてプロジェクトを進めていきましょう。

ktaroabobon commented 5 months ago

上記は #31 時点でのjust ideaなので、front/back再構成するなら変更する場所が出てきそう...