Hm, I too, would expect Thing1Case to mean one thing and one thing only...
hence this specification exercise 😉

Gary

On Wed, Aug 9, 2023, 9:52 PM Daniel Watson <dcwatso...@gmail.com> wrote:

> I would think it's possible to hide that "configuration" from the user such
> that the implementation can only be reconfigured via extension. But I'm not
> in love with the configurable base class either way. It was convenient to
> have the common functionality in one place, but it's not a big deal to
> handle that differently.
>
> The tradeoff in having the Cases be pure functions is that it makes it more
> difficult for a user to extend them with additional functionality. And to
> me the need for extension is apparent even when just looking at the 4 basic
> cases. Two of them are character delimited, and 2 of them are uppercase
> delimited. There's two bits of shared functionality just in the 4 most
> basic cases.
>
> Back to the exception topic, I don't think the tokens "my" "component" and
> "1" can be formatted in PascalCase in a way that they could be parsed back
> out into 3 tokens. So the question is less about whether it's possible to
> format them and more about whether the API should format output that cannot
> be parsed back into the same input. I think it makes sense to enforce that
> consistency, or at the very least allow the user to enable it?
>
>
>
>
> On Wed, Aug 9, 2023, 9:14 PM Elliotte Rusty Harold <elh...@ibiblio.org>
> wrote:
>
> > On Wed, Aug 9, 2023 at 11:36 PM Daniel Watson <dcwatso...@gmail.com>
> > wrote:
> > >
> > > Meant to add...
> > >
> > > The reason I would favor exceptions is that the underlying
> implementation
> > > can be easily customized. If the user needs to allow non alphanumeric
> > > characters there is a boolean flag in the underlying abstract class
> > > (AbstractConfigurableCase) that will simply turn that validation off.
> >
> > This is another point, but customizability is a bug, not a feature. I
> > don't want to guess what the method might be doing based on what flag
> > was set where. I want camel case to mean one thing and one thing only.
> > Ditto snake case, pascal case, and any other formats. Possibly there's
> > a reason to add additional subclasses, but the
> > CamelCase/SnakeCase/KebabCase classes should not emit different
> > strings depending on how they're configured. The public API should be
> > a pure function, not an object.
> >
> > --
> > Elliotte Rusty Harold
> > elh...@ibiblio.org
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > For additional commands, e-mail: dev-h...@commons.apache.org
> >
> >
>

Reply via email to