Skip to content

[!!!TASK] Make all classes final #820

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

Merged
merged 1 commit into from
Jan 21, 2024
Merged

[!!!TASK] Make all classes final #820

merged 1 commit into from
Jan 21, 2024

Conversation

jaapio
Copy link
Member

@jaapio jaapio commented Jan 19, 2024

This library has a very large number of extension points via interfaces and abstract classes. All other classes should not be extended by users and shall theirfor be marked as final.

There are a few classes left that should also be marked as final but those require some extra attention.

@jaapio jaapio requested a review from linawolf January 19, 2024 17:00
Copy link
Contributor

@linawolf linawolf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it can save us work if all these classes are final. Thanks for taking care of it!

@wouterj
Copy link
Contributor

wouterj commented Jan 21, 2024

👍

I see you also made some DTOs final (without interfaces). If these DTOs are part of the public API (either return or parameter type), this can block legitimate extension points (e.g. you can not add new properties to such DTO from a decorator). Not sure if this applies to any of the classes in this PR, but just so you are aware of this.

@jaapio
Copy link
Member Author

jaapio commented Jan 21, 2024

Thanks @wouterj, I'm aware that this might block extensions, I think we need some extra interfaces, I will review that per case. However I think some of the helper classes will be marked as internal and should never be exposed to the world as they are part of the internals of this libraries.

This library has a very large number of extension points via
interfaces and abstract classes. All other classes should not
be extended by users and shall theirfor be marked as final.

There are a few classes left that should also be marked as final
but those require some extra attention.
@jaapio jaapio force-pushed the final-all-classes branch from 82417c7 to a7395d0 Compare January 21, 2024 19:16
@jaapio jaapio enabled auto-merge January 21, 2024 19:16
@jaapio jaapio merged commit 8b945c9 into main Jan 21, 2024
@jaapio jaapio deleted the final-all-classes branch January 21, 2024 19:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants