Reuse package+imports header in Clazz#148
Open
adamw7 wants to merge 1 commit into
Open
Conversation
Clazz built the package declaration and imports once in the constructor (to hand to Interfaces/Implementations) and then rebuilt the identical string in generate(). The two strings were computed from the same inputs with no intervening state change, so the second computation was dead work — and if the two ever diverged it would have been a subtle bug. Store the header once and reuse it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
ClazzcomputedgeneratePackage() + generateImports()twice: once in the constructor (to hand toInterfaces/Implementations) and again at the top ofgenerate(). The two values are computed from the same inputs with no state change between them, so the second call is dead work — and if they ever diverged, we'd silently emit different imports in the main class than in the sibling interfaces/impls.Store the header once on the instance and reuse it.
Test plan
mvn installpassesprotogen-maven-plugin-test)