Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New name for DeferredFutureSingle and DeferredFutureMaybe #1

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

groue
Copy link
Owner

@groue groue commented Oct 12, 2020

@pakko972, j'ai renommé les deux publishers qu'on peut créer avec une closure, et enlevé le namespace TraitPublishers qui ne sert plus à rien, du coup:

-let publisher = TraitPublishers.Single { promise in ... }
-let publisher = TraitPublishers.Maybe { promise in ... }
+let publisher = DeferredFutureSingle { promise in ... }
+let publisher = DeferredFutureMaybe { promise in ... }

Tu penses que ça peut aider à s'en rappeler ?

On avait aussi SingleDeferredFuture et MaybeDeferredFuture, qui ont l'avantage de commencer par le mot désiré et sont donc sympas avec l'autocompletion. Mais j'ai trouvé que MaybeDeferredFuture avait trop d'interprétations erronées (genre: "Hu? It may be deferred? What does it mean?").

Autres options qui ne m'ont pas convaincu:

  • AnySinglePublisher.create { ... }, trop inspiré de RxSwift, pas assez parlant pour les "Combine-natives".
  • AnySinglePublisher.make { ... }, flou
  • AnySinglePublisher.deferred { ... }, on s'attend à ce que la closure renvoie un publisher, à cause de Combine.Deferred.
  • AnySinglePublisher.future { ... }, on s'attend à ce que la closure soit lancée immédiatement, avant la subscription, à cause de Combine.Future (un éjaculateur précoce, ce Combine.Future, ce qui pose plein de problèmes).
  • AnySinglePublisher.deferredFuture { ... }, plus tellement mieux que DeferredFutureSingle { ... }

@groue
Copy link
Owner Author

groue commented Oct 12, 2020

On avait aussi SingleDeferredFuture et MaybeDeferredFuture, qui ont l'avantage de commencer par le mot désiré et sont donc sympas avec l'autocompletion.

Bon, ils sont là, "relativement" visibles:

Capture d’écran 2020-10-12 à 19 04 23

@pakko972
Copy link
Collaborator

Je m'interroge quand même sur le fait que DeferredFuture[Single/Maybe] "leak" les détails d'implémentation.

Que penses-tu de MaybePublisher et SinglePublisher avec dans la doc une partie reprenant les détails d'implémentation que sont Deferred et Future ?

@groue
Copy link
Owner Author

groue commented Oct 19, 2020

Moi non plus je ne suis pas ultra fan de DeferredFuture dans le nom. Même si ça a l'avantage de "sonner" Combine, et de permettre aux utilisateurs de Deferred et Future de reconnaître la bête. Mais globalement je suis d'accord avec toi. C'est verbeux, pas joli, très "cambouis".

Ce serait idéal, SinglePublisher et MaybePublisher... Aujourd'hui ce sont les noms des protocoles, et on ne peut pas coller de méthode statique ou d'initializer sur un protocole avec types associés pour produire un type concret.

Par contre... on pourrait renommer les protocoles en SingleTraitPublisher et MaybeTraitPublisher ? Ça libère SinglePublisher et MaybePublisher, et paf!

@groue
Copy link
Owner Author

groue commented Oct 20, 2020

OK on fait ça !

@groue
Copy link
Owner Author

groue commented Oct 21, 2020

Non on ne fait pas ça ! Si le protocole est SingleTraitPublisher, alors le "type erasure" devrait être AnySingleTraitPublisher au lieu de AnySinglePublisher, et la méthode d'erasure serait eraseToAnySingleTraitPublisher() au lieu de eraseToAnySinglePublisher() (déjà pas mal longue).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants