Software Craftsmanship Competency Assessment
Question 1 of 10User Account State Modeling
public class UserAccount {
private String status; // "ACTIVE", "SUSPENDED", "PENDING_VERIFICATION"
private boolean isEmailVerified;
private boolean isSuspended;
private String suspensionReason;
public boolean canLogin() {
return status.equals("ACTIVE") && !isSuspended && isEmailVerified;
}
public void suspend(String reason) {
this.status = "SUSPENDED";
this.isSuspended = true;
this.suspensionReason = reason;
}
}
What would be the best refactoring of this code?