안녕하세요! Java 에서 switch 문을 무작정 사용하게 되면 확장이 어려워지고 Open-Closed Principle 규칙을 해할 수 있으며 신규로 추가되는 케이스에 대해 누락할 경우 오류나 버그가 유발될 가능성이 있어 유지보수에 신경을 써야합니다. 다만 이건 switch 문에만 해당하는 문제는 아니며, 특정 타입값이나 enum 등으로 동일한 분기처리를 여러곳에서 행하게 될경우 SubClass 를 분기가 되는 조건에 맞게 구현함으로써 앞서 설명드린 문제를 개선해 볼 수 있습니다. 이에 대해 자세한 설명이 나와있는 글을 공유드리니 참고하시면 좋겠습니다. - https://makolyte.com/refactoring-the-switch-statement-code-smell/ 하지만 이거 때문에 Java 의 switch 를 무조건 안써야 한다는건 맞지 않는것 같고요, 케이스에 따라 쓸수도 있고 안쓸수도 있다고 생각됩니다. 추가적으로 아직은 프리뷰 기능이긴 합니다만, Java 17 부터 제공되는 확장된 패턴 매치 기능을 통해 switch 문을 좀 더 다양하게 활용할 수 있을것으로 보고 있습니다. 이와 관련된 내용은 baeldung 에서 정리된 예제(https://www.baeldung.com/java-switch-pattern-matching#patterns-for-switch)를 참고해주세요. 너무 Java switch 문에 대해서만 말씀드렸는데 Kotlin 의 when 은 Java 14 부터 개선된 switch 기능과 거의 유사하다고 생각됩니다. 또한 개인적으로 생각하는 Java 14 버전 switch 와 Kotlin when 의 강력한 기능중 하나는 새로운 enum 타입이 추가되었을 때 when 절에 포함되어있지 않으면 컴파일 단에서 이를 체크한다는 점입니다.(단, java 의 경우 default, kotlin 의 경우 else 문이 없어야 합니다.) 이러한 기능을 잘 활용한다면, 경우에 따라 switch 와 when 도 충분히 쓸만한 기능이라고 생각이 듭니다. 부디 저의 짧은 지식이 도움이 되셨길 바랍니다.🙏

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 3월 23일 오후 4:05

댓글 0