Closed roman-vanesyan closed 2 months ago
Hi Roman,
DUDE! I'm not sure how I didn't see this originally, as I thought I'd played around with that type parameter ordering to try and get it as nice as possible, but apparently I did not.
I just plugged the change into our codebase and it cleans things up so much. For fun, I've included a real world diff below to show how much nicer/shorter all the code gets.
I'll update the blog post tomorrow and credit you. Thanks!
Thanks again for this.
Updated the article here:
https://brandur.org/two-phase-render#renderable
And wrote an atom about it:
Article: https://brandur.org/two-phase-render What a nice reading! Like the idea outlined in the article, it is so elegant, yet powerful. Indeed, in general, explicit splitting of fetching step from render/transforming step of the resource makes it cleaner and less error prune. We kinda did something similar at my current work.
But I have a rather technical question regarding the
Render[...]
function declaration. What is the reason of havingTLoadBundle
as the first generic argument? Won't having it next to theTRendenderable
make it inferrable as well?Practically changing this:
to:
will help to change call from:
to:
as
apiresourcekind.Product
already references*apiresourcekind.ProductLoadBundle
when implementingRenderable#Render
.