Aller au contenu
Filtrer les règles par style d’implémentation
Style
Les deux styles
Sévérité
majeure
S’applique à
  • Use cases (application)
  • Adapters driving

UC-02 · L’application parle en use cases, pas en protocoles ​

Style
Les deux styles
Sévérité
majeure
S’applique à
  • Use cases (application)
  • Adapters driving

Signal ​

  • Un use case ou le domaine qui manipule des types du transport : Request, Response, exceptions HTTP, en-têtes, messages bruts d’un broker.
  • Deux méthodes de l’application presque identiques, l’une pour REST, l’autre pour la messagerie.
  • Un adapter driving (controller, consumer) qui fait plus que traduire l’entrée et déléguer.

Pourquoi ​

Chaque adapter transforme l’entrée de son client en un appel à l’API de l’application. Tous les adapters appellent la même API. L’application est conçue autour de ses use cases, pas autour du nombre de ses clients. Dans une bonne conception, l’application et le domaine ne laissent rien fuir vers les adapters.

Exceptions ​

Aucune.

Correction ​

L’application reçoit des commands ou des paramètres neutres, et renvoie des erreurs de l’application ou du domaine. L’adapter driving traduit dans les deux sens.

Adaptation ​

Notre choix : le domaine et l’application renvoient leurs erreurs métier dans un Result, et l’adapter driving traduit ce résultat en réponse HTTP. Un exception filter reste en place pour les erreurs inattendues : pannes et bugs.

Exemple ​

ts
// Avoid: the application speaks HTTP
if (!wallet) {
	throw new NotFoundException('Wallet not found');
}
ts
// Preferred: a domain error, which driving translates into a 404
if (!wallet) {
	return err(new WalletNotFound(walletId));
}