claude-memory/graph/code-patterns/when-extracting-a-class-also-move-its-module-level-helper-de-9c7873.md
2026-02-25 16:44:41 -06:00

1.4 KiB

id type title tags importance confidence created updated relations
9c7873fa-2c4e-4058-a315-cefb3c02788a code_pattern When extracting a class, also move its module-level helper dependencies
python
refactoring
code-organization
circular-imports
paper-dynasty
0.7 0.8 2026-02-25T22:44:27.648627+00:00 2026-02-25T22:44:41.938081+00:00
target type direction strength edge_id
b235f924-b532-40cd-be39-4fb765938add BUILDS_ON incoming 0.8 45342806-cdc6-478e-aa38-4294045aafe8

Pattern\nWhen extracting a class to a new file, check if any module-level helper functions are called from within the class's methods. Those helpers must move to the new file too — otherwise the new file would need to import back from the original file, re-creating a circular import.\n\n## Example (paper-dynasty/card-creation)\nbatters/models.py received BattingCardRatingsModel plus 13 helper functions called by its methods:\n- bp_singles, wh_singles, one_singles\n- bp_homeruns, triples, two_doubles\n- hit_by_pitch, strikeouts\n- flyout_a, flyout_bq, flyout_b\n- groundball_a, groundball_c\n\nBy contrast, pitchers/models.py contains only PitchingCardRatingsModel because it had no module-level helper dependencies.\n\n## Rule\nBefore finalising a class extraction, grep the class body for any unqualified function calls and trace them back to their definition file.