Skip to content

Refactor (packages/tui/src/ui/spinner.ts): Function with many returns - #57

Open
wjeon0329 wants to merge 1 commit into
CMU-17313Q:mainfrom
wjeon0329:refactor-spinner-state
Open

Refactor (packages/tui/src/ui/spinner.ts): Function with many returns#57
wjeon0329 wants to merge 1 commit into
CMU-17313Q:mainfrom
wjeon0329:refactor-spinner-state

Conversation

@wjeon0329

@wjeon0329 wjeon0329 commented Sep 3, 2026

Copy link
Copy Markdown

P1B: Starter Task: Refactoring PR

1. Issue

Link to the associated GitHub issue: #54

Full path to the refactored file:'
packages/tui/src/ui/spinner.ts

What do you think this file does?
This file creates the spinner animation, including how the scanner moves forward, backward, other directions, etc.

What is the scope of your refactoring within that file?
I changed the 'getScannerState()' function and added helper function called 'getBidirectionalScannerState()' for the bidirectional logic.

Which Qlty-reported issue did you address?
Qlty reported 'Function with many returns (count=6): getScannerState' at 'packages/tui/src/ui/spinner.ts:25'.

2. Refactoring

How did the specific issue you chose impact the codebase’s maintainability?
'getScannerState()' handled multiple scanner directions and had six different return statements. This has made the function to be harder to maintain.

What changes did you make to resolve the issue?
I moved the bidirectional scanner logic into a separate helper function called 'getBidirectionalScannerState()'. I made sure that the bidirectional scanner still creates the same frames even after the refactor.

How do your changes improve maintainability? Did you consider alternatives?
The original 'getScannerState()' is now more simple, since the bidirectional logic is handled separately. I considered keeping everything inside the same function; however, separating that logic made the main function to be easier to read, without changing the usability or how the original scanner worked.

3. Validation

How did you validate that the change is correct?
First, I ran Qlty again, and it reported the original 'getScannerState()' issue before the refactor and no longer reports it after the change. Also, TUI package test suite passed too. I also added a regression test for the bidirectional scanner and checked coverage to confirm that the code I added is executed by the test.

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

image

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.

image image

Screenshot of bun lint and bun test
image

image

@wjeon0329 wjeon0329 changed the title Refactor packages/tui/src/ui/spinner.ts scanner state handling Refactor (packages/tui/src/ui/spinner.ts): scanner state handling Sep 4, 2026
@wjeon0329 wjeon0329 changed the title Refactor (packages/tui/src/ui/spinner.ts): scanner state handling Refactor (packages/tui/src/ui/spinner.ts): Function with many returns (count = 6) Sep 4, 2026
@wjeon0329 wjeon0329 changed the title Refactor (packages/tui/src/ui/spinner.ts): Function with many returns (count = 6) Refactor (packages/tui/src/ui/spinner.ts): Function with many returns Sep 4, 2026
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.

2 participants