Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
Document the pattern for evolving case classes in a compatible manner #2662
Document the pattern for evolving case classes in a compatible manner #2662
Changes from 21 commits
e54f7f1
5c8df68
0361062
3b1fc57
6b8b157
75b5937
1118fb3
64776be
b583d46
a6d4fc0
85bf8e7
359219e
25af00f
b328958
caaa532
9afdd84
7806dbd
a764a9c
a52d7d6
7668763
293a0bd
5c1d9b3
4f548e9
f3e6c15
3ab5b4b
a818702
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@julienrf Thanks for you suggestions. I've applied them all. But I think this part is worth a discussion.
Shouldn't we recommend readers to also include the
apply
methods in the companion object? Becauselooks a bit clumsy. This looks much better
I know, we save on some boilerplate in the class definition. But we're just pushing the boilerplate onto the users of the class. Is that the right choice to make?
Ideally we'd have our cake and eat it too, but I don't know if it's possible without a new language level feature...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don’t think the pattern I suggested is clumsy. It is similar to the “builder” pattern we often see around.
Anyway, there are probably several possible variations. The one I suggest here provides a public-facing API that (I think) is simpler because it contains fewer overloads of the
apply
methods.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, documentation space is not scarce :) so I suggest to explain both possibilities here: withX or overloaded apply constructors. It's up to the library author. And if the library user is "refused" a more concise constructor then it's just a self-made extension away...