Skip to content

improving code quality by refactoring#399

Open
mitimugdho wants to merge 3 commits into
failsafe-lib:masterfrom
mitimugdho:master
Open

improving code quality by refactoring#399
mitimugdho wants to merge 3 commits into
failsafe-lib:masterfrom
mitimugdho:master

Conversation

@mitimugdho

Copy link
Copy Markdown

Files changed: CircuitBreakerImpl.java, RetryPolicyExecutor.java, Functions.java, Fallback.java, FailsafeExecutor.java

Files added: RetryDelayCalculator.java, FunctionAdapters.java, ExecutorDelegation.java

  1. CircuitBreakerImpl.java:165 — NonExhaustiveSwitch
    The transitionTo() method mixed locking with an inline switch over State that selected which CircuitState implementation to construct, that switch had no default case.
    Extracted state construction into its own createState(State, ExecutionContext) method with an explicit default branch throwing IllegalArgumentException. transitionTo() now only handles locking and listener dispatch; createState() is independently testable without driving a full transition.

  2. RetryPolicyExecutor.onFailure() — responsibility extraction
    onFailure() combined three unrelated concerns: a 4-step delay computation, retry-exhaustion decisions, and event-listener dispatch.
    Extracted the delay pipeline into a new class, RetryDelayCalculator, which now owns that state and the four delay-adjustment steps. RetryPolicyExecutor delegates to it via a single call.

  3. Functions.java — God Class split
    Functions was a 300 line package-private utility class combining three unrelated responsibilities with no shared state.
    Split into Functions (execution wiring, unchanged scope otherwise), ExecutorDelegation (executor delegation), and FunctionAdapters (type adaptation).

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