Replace status branches with State
Apply State or Strategy to remove repeated status conditionals safely.
Subscription status drives renewal, cancellation, invoicing, and notifications through repeated conditionals. State pattern: represent state-specific behavior as objects behind one role, then delegate from the context. The common trap is building a full state machine framework before proving which behavior should move first. Find repeated status behavior Identify methods where Trialing, Active, Paused, and Canceled lead to different outcomes. Repeated alternatives across behaviors indicate that a state role may pay off. Add the role Create SubscriptionState with canRenew(subscription, clock) and implementations for existing statuses. A narrow interface lets the first move stay small. Delegate one method Subscription.canRenew(clock) delegates to state.canRenew(this,…
Sign up free — one personalized lesson every day, matched to your role and goals.
Already have an account? Sign in