Skip to content

Refactor (packages/ui/src/v2/components/select-v2.tsx): Function with high complexity - #68

Open
laibasameer wants to merge 2 commits into
CMU-17313Q:mainfrom
laibasameer:refactor/select-v2-complexity
Open

Refactor (packages/ui/src/v2/components/select-v2.tsx): Function with high complexity#68
laibasameer wants to merge 2 commits into
CMU-17313Q:mainfrom
laibasameer:refactor/select-v2-complexity

Conversation

@laibasameer

@laibasameer laibasameer commented Sep 4, 2026

Copy link
Copy Markdown

P1B: Starter Task: Refactoring PR

1. Issue

Link to the associated GitHub issue: #36

Full path to the refactored file: packages/ui/src/v2/components/select-v2.tsx

What do you think this file does?
Based on the file name and the selectv2 component, I assume this file is used to create a reusable select or dropdown component for the UI. It includes items like a down chevron, likely for selection.

What is the scope of your refactoring within that file?
I refactored the SelectV2 function, including the selection, highlighting, selected-value, and open/close logic.

Which Qlty‑reported issue did you address?
I addressed the Function with high complexity issue in SelectV2, which had a complexity count of 33 before I worked on it.

2. Refactoring

How did the specific issue you chose impact the codebase’s maintainability?

Having so much logic inside SelectV2 made the function harder to read and understand because it handled several different things such as highlighting and opening and closing the menu all within it.

What changes did you make to resolve the issue?

I moved the highlight and open/close logic into separate helper functions and moved the selected-value logic into select-v2-utils.ts.

How do your changes improve maintainability? Did you consider alternatives?

The changes break up some of the logic so that SelectV2 is easier to follow and maintain, and lowered the complexity from 33 to 20. I tried a few different ways of splitting up the code and just kept the ones that actually reduced the complexity.

3. Validation

How did you validate that the change is correct?

I ran the UI tests and all 31 tests passed. I also ran coverage, which showed 100% function and line coverage for the new select-v2-utils.ts file, and Qlty showed the complexity drop from 33 to 20.

Attach a screenshot of the test coverage showing the lines were executed by the tests.

100% Line coverage:

Screenshot 2026-09-05 at 12 30 46 AM

Attach a screenshot showing the tests that cover the change passing during CI

image

Attach a screenshot of qlty smells --no-snippets <full/path/to/file.ts> showing fewer reported issues after the changes.

Before: Qlty smell shows 33 complexity count

packages/ui/src/v2/components/select-v2.tsx
  64  Function with high complexity (count = 33): SelectV2

After: Complexity dropped to 20
Screenshot 2026-09-05 at 12 34 28 AM

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.

1 participant