fix: Improve Code Readability and Performance for Contract Hash Gener… #1275
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.
Description
Hey team,
I’ve made some improvements to the contract hash generation script to enhance readability, maintainability, and performance while keeping the functionality intact. Below is a summary of the changes:
What I’ve Changed
Reduced Redundancy:
remove_prefix_from_names
andremove_prefix
into a single operation using Python’s built-instr.removeprefix
. This simplifies the logic and reduces the number of helper functions.Optimized Sorting:
KNOWN_ORDER
list. This avoids the use of a lambda function in sorting.Improved String Handling:
+=
string concatenations in loops with list-building and a single'\n'.join
call. This makes the script more efficient and Pythonic.Simplified Normalization Logic:
normalize_len
to usezfill
for zero-padding, simplifying the function while keeping the behavior unchanged.Enhanced Readability:
Why This Matters
These changes don’t just clean up the code—they make it easier for others (and future us!) to understand and extend. The performance improvements, while not dramatic, ensure the script runs efficiently, even with a large number of contracts.
Testing
Feel free to tweak this to include any specific context or examples you think the team would appreciate!
PR Checklist