Skip to content

勉強:Kotlin/SpringBoot/アプリアーキテクチャ/戦術的DDD/エラーハンドリング/ソフトウェアテスト/OpenAPIからコードの自動生成

Notifications You must be signed in to change notification settings

sunabak0/realworld-kotlin-springboot-jdbc

Repository files navigation

RealWorld

ci-status Maintainability Test Coverage codecov

開発

git config --local core.hooksPath .githooks
make
######################################################################
# Makeタスク一覧
# $ make XXX
# or
# $ make XXX --dry-run
######################################################################
up                   サーバー起動
up.db                db起動
down.db              dbを落とす
test                 テスト実行
test.with-local-db   テスト(with local db)実行
test.e2e             e2eテスト実行
fmt                  format
lint                 lint
docs.generate-db-docs-schemaspy schemaspyでDB用のドキュメントを作成、表示する(gitに含めない)
docs.generate-kdoc   KDocを生成と表示(gitに含めない)
help                 Make タスク一覧

アーキテクチャ

UseCase

  • UseCase層は必ず Either<UseCaseError, UseCaseOutput> を返す(例外:認証時の戻り値はDomainObjectで良い)
    • Domain〇〇をそのまま返さないこと(必要であればWrapする)
      • 詰め替える
      • Wrapする時、Either自体の入れ子はやめること(取り出して中身をWrapする)
  • 基本的にUseCase層でDomainObjectをインスタンス化する時、バリデーションをかける
  • UseCaseError、UseCaseOutputの命名では技術的用語を使わないようにする

Infra

  • Infra層は必ずEither<DomainError, DomainObject>を返す
  • Infra層はDobmainObjectのバリデーション無しでインスタンス化可能である

Either<E, T>とValidatedNel<E, T>

自作/他作 言葉 説明、代替表現
T 自作 正常系 - 晴れの日
- 基本コース
E 自作 準正常系 - 雨の日
- 代替コース
- ビジネス例外
- 予期する例外
- 回復可能なエラー
- データとして定義されるエラー
Throwable 他作 異常系 - 技術的例外
- 予期しない例外
- 回復不可能なエラー

回復可能・不可能はResult/Eitherに合わせて記述していましたが、「GoodCode,BadCode」を読んで微妙に文脈がずれていると解釈したので、準正常とか異常系を区別するのに使わないことが適切と判断しました

他レイヤーやテスト方法等

詳細

DBについて

詳細

About

勉強:Kotlin/SpringBoot/アプリアーキテクチャ/戦術的DDD/エラーハンドリング/ソフトウェアテスト/OpenAPIからコードの自動生成

Topics

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages