lianetm commented on PR #15750:
URL: https://github.com/apache/kafka/pull/15750#issuecomment-2066727111
Thanks for the info @kirktrue , I see you mentioned it was a "suggested
pattern", and I won't hold a strong position here but still sharing how I see
it (struggling to find a value in it that compensates the drawbacks)
Drawbacks:
- overcomplicated flow to understand where a class `toString` comes from
(back-and-forth between a child class and its parent): child has no `toString`,
jump to parent that has it but uses a `toStringBase`, defined in the parent but
redefined in the child, so jump back to child where `toStringBase` is
redefined. I find more intuitive/simpler to just have child classes with
`toString` that uses a `toStringBase` defined in parent (like its name clearly
indicates).
Value it brings:
> It allows the parent to keep its state private, but still "expose" it via
toString()
We get exactly the same in both alternatives. Parent keeps state private,
exposed via toStringBase/toString
> It helps to ensure the correct class name appears in the output
This was actually not happening when I reviewed this PR the first time, and
it was indeed confusing. Still with the fix to get the child class name in the
parent, I wonder if it's worth the ping-pong? A child class using a wrong class
name in the `toString` seems like an unlikely silly bug, easy to catch/fix
during the initial development phase.
> It keeps the output uniform and reminds the developer to keep the parent
state
A little bit more uniform, yes, but only as long as the developer does it
right when overriding the `toStringBase` right? So we're just kind of shifting
the responsibility from overriding the toString properly, to overriding the
toStringBase properly (at the expense of the ping-pong). And we're not truly
reminding the developer unless we have an abstract method I would say, which is
not the case.
Just sharing my thoughts, I may be bothered by the ping-pong flow more than
others in this case ;)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]