refact: eliminate duplication in Request/Response via struct embedding #2027
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.
Reduces code duplication by embedding the
header
struct into bothRequestHeader
andResponseHeader
to share common fields.I found that there are many duplicate methods in
header.go
. We can reduce this repetition by using struct embedding. This PR improves maintainability by allowing shared logic betweenRequestHeader
andResponseHeader
to be implemented in a single method with a single comment.Additionally, by embedding the Header struct, it implicitly communicates to users which methods on
RequestHeader
andResponseHeader
share the exact same underlying implementation.During the refactoring process, I also discovered that the SetProtocol methods in RequestHeader and ResponseHeader are inconsistent.
The same function name
SetProtocol
inRequestHeader
andResponseHeader
have different inputs, and theResponseHeader.SetProtocol()
does not update thenoHTTP11
.