重构switch