티스토리 뷰

반응형

 

 

 

안녕하세요! 민군입니다 ^-^// 

최근에 부스트코스를 수료하게 되면서 신경쓰지 못했던 알고리즘 기초 공부를 하고 있습니다. 수학연산, 부르트포스와 순열쪽을 최근 들었는데 재밌으면서도 많은 산들을 보며 분발하고 있습니다. Swift + 알고리즘 고수가 되어 질좋은 개발자가 되고싶군요. ㅎㅎ

자 거두절미하고, 오늘은 부스트코스 5번째 과제에서 지적받았던 부분에 대해서 해결방법을 공유하고자 합니다. 이부분은 제가 부스트코스 3번째 과제를 하면서도 한번 지적받은 적이 있었는데요. 또다시 작은 주제로 지적을 받으니 부끄럽기도 하면서, "이부분 정말 중요하다!" 싶어 포스팅을 하게 되었어요.

그것은 바로! Enum Switch문 혼용으로 default분지를 제거하고 깔끔하게 코딩을 짜내는 방법입니다. 초보자분들은 유용하게 활용 가능하실 겁니다. Enum이 Swift에선 정말 자주 사용되기 때문입니다.

 

 


  • Enum Switch문으로 불필요한 default분기 제거하기 - 문제상황

제가 프로젝트 5번에서 받은 지적 중 하나입니다. 영화정보를 호출하는 과정에서 서브코드(꼬리 분류코드)를 구조체를 만들어서 사용하다가 지적을 받은 것입니다. 이렇게 되면 구조체 SubCode에 대한 Switch분기를 할 경우, default: 분기가 있게 되어 에러의 위험성을 가지고 있는데요. 이럴떼 구조체 대신 Enum 열거형타입으로 변경하여 Switch문과 함께 사용하면 Default분기로 사라지고 보다 깔끔한 코딩이 가능해집니다. 한번 문제가 생겼던 곳을 돌아 보겠습니다.

 

 

 

클래스 외부 전역변수로 구조체를 선언해서 사용하였는데요. 간이용으로 사용할 수는.. 있겠지만 Enum Switch문의 사용을 하지않고 해당 구조체를 Switch분기에 이용하게 되면

, default: 분기가 함께 들어갈 수밖에 없습니다.

 

 

 

 

위의 경우가 대표적인 예입니다. sortCode에 구조체의 String형 멤버변수를 넣게 되어 사용하는 분류기준 셋팅 함수인데요. 그냥 생 String형 변수가 인자값으로 들어가 Switch분기를 맞이하게 되는 상황, default: 분기가 함께하며 조금 찜찜한 상황이 되었습니다. 자 그렇다면 이 경우 Enum을 대신 활용하게 될 경우 생기는 장점을 바로 보겠습니다.

 

 

 


  • Enum Switch문으로 default: 분기를 깔끔하게 제거한다.

 

아까 전 SubCode 구조체를 enum 열거형타입으로 변경했습니다. String rawValue(enum의 분기 별 값의 날 값 데이터)는 이전 구조체에서 선언한 String SubCode값이 되었습니다. 크게 변경한 것도 없이 이렇게 enum형으로 선언이 되었지요. 이제 이어서 enum switch문을 활용한 예시를 보여드리겠습니다.

 

 

 

그리고 앞서 사용하던 setSortStandard함수의 인자값 형은 SubCode열거형 값으로 바꿔줍니다. case분기에는 sortCode의 분기요소들이 나열되고 default: 분기는 깔끔하게 필요가 없어졌습니다. 위처럼 enum을 switch case문에 사용하면 default: 분기가 사라지게 되어 에러나 불필요한 상황의 위험성을 방지해줍니다. 

 

 

 

 

enum형 변수의 초기화나 값 설정은 enum형 변수명 = .enum분기요소명 이 됩니다. enum형 변수를 통해 각 enum분기 별 String값도 쉽게 추출할 수 있습니다. 바로 enum변수.rawValue를 하면 현재 enum변수의 분기에 맞는 날 값을 얻어낼 수 있습니다. 

 

위 이미지처럼 처럼 subCode(enum변수).rawValue의 형식으로 현재 필요한 현재 enum분기에 맞는 날값을 활용하고 있는 것을 보실 수 있습니다. 

 

 

이렇게 enum을 switch문에 활용하면 default:문의 제거로 코드를 어떻게 깔끔하게 만들 수 있는지, rawValue의 활용방법등에 대해 간단하게 알아보았습니다. enum형은 특히 스위프트에서 굉장히 중요한 역할, 많은 사용이 이루어진다고 하니 Swift린이들의 많은 관심이 필요할 것 같습니다. 추후에 더 좋은 정보와 함께 찾아오겠습니다 ^-^//

 

그러면 이만...... 즐 코딩~

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함