[HN Gopher] A FactoryFactoryFactory in Production ___________________________________________________________________ A FactoryFactoryFactory in Production Author : fragmede Score : 23 points Date : 2023-07-07 21:25 UTC (1 hours ago) (HTM) web link (stevenheidel.medium.com) (TXT) w3m dump (stevenheidel.medium.com) | Sesse__ wrote: | At my first project in my first job, there was a | MockWorkerInfoServiceStubFactory. I think it was a factory for | mocks of the stub for the worker info service, but it's never | easy to know when to pop tokens from the start or from the end of | such a name... (It was in C++.) | ts4z wrote: | I overlapped at LinkedIn at the same time as the author. While | there, I wrote my first (and to date only) FactoryFactory. | | LinkedIn replaced its uses of Spring with a thing called | Offspring. Offspring explicitly disavowed being a dependency | injection framework, but it did a similar job for us. I rather | liked it. Notably, you just wrote Java with it. Invariably, in | Offspring, you'd have to write a FooFactory to construct your Foo | object to inject it into some (other class. By convention, all of | the factories ended in Factory. | | Well, I had a use case for a runtime class that needed to make a | per-request factory to make little objects. So to make my Bars, I | needed a BarFactory; and to construct the BarFactory, I needed an | Offspring factory, thus BarFactoryFactory. There it was. I felt a | little weird after that. | | I suspect the EventFactoryFactoryFactory code here was such an | Offspring factory being used for dependency injection, but I | can't explain why it produced a FactoryFactory. | personjerry wrote: | The story kinda ends at its climax, and abruptly ends upon | reaching the `class EventFactoryFactoryFactory` and fails to | explain why it was needed or what it did, concretely | Tehdasi wrote: | That's the punchline, nobody knows what it does or why it was | needed. | Nuzzerino wrote: | * * * | eximius wrote: | I can understand how `InboundRequestContextFinderProviderFactory` | comes about, hopefully due to a very mature, thorough testing | environment where your `InboundRequestContextFinder` is injected | via a provider and that provider needs to be constructed for | different environments. | | Though it does seem like perhaps the Finder itself is possibly an | unnecessary abstraction. | | Frankly, the longer I work, the more comfortable I am seeing | these kinds of things. They can be misused, but they are also | necessary for some really good things too. The absurd names are | funny, but also somewhat standardized enough to be a signal on | their own. ___________________________________________________________________ (page generated 2023-07-07 23:00 UTC)