2024. 3. 21. 15:29ㆍ회고
습관 만들기앱 습관 진행상태 enum처리 회고
enum 활용 용도
- 특정 상태나 옵션을 나타내는 경우
회고
습관 상태에 따른 분기처리를 Enum을 활용하여 개선한 경험을 통해, 이에 대한 회고를 작성해보았습니다.
기존의 분기는 완료/미완료/시작하기전만 존재 하였는데 디자인 튜너님 피드백을 반영하기 위해 쉬는날에 대한 분기처리가 필요해졌습니다.
하나의 분기를 enum에 추가 해주고 데이터를 받아와주는 곳에 쉬는날을 처리해주는 분기를 추가해줌으로써 해당 피드백 상황을 반영했습니다.
실제 경험담으로 enum을 사용하지 않고 분기에 대한 처리를 했을때 복잡하게 수정이 이루어졌을 경험이 있어 enum을 활용하여 효과적으로 분기를 처리해보자 생각하고 enum형태로 만들었는데, 처음에는 큰 이점이나 편의성을 느끼지는 못했다.. 굳이라는 생각이 들었음 ,,
But 상태하나를 enum의 추가하고 해당 분기에 대한 처리를 해결함으로써 간단하고 편리하게 확장/수정이 가능한것을 경험함으로써 enum의 이점을 알게 됬슴다 👍
앞으로는 데이터의 상태처리는 enum으로 ~~
덧 붙여 앞으로 코드의 확장/수정이 필요하지 않을꺼라는 생각을 하지말고 enum뿐만아니라 다양한 타입을 사용하여 항상 확장/수정을 생각하면서 코드를 짜보는 습관을 만들자 라고 머리에 심을 수있게된 경험이였습니다.
확장/수정 default로 생각하기!
아래 코드는 습관 상태를 enum을 통해 처리해주는 코드
enum HabitState{
case done // 습관 완료
case doNot // 습관 미완료
case notStart // 시작하기전
case dayOff // 쉬는날 - 추가된 코드
}
아래 코드는 습관정보데이터를 HabitState의 형태로 변경해주는 코드
if date.comparisonDate(fromDate: currentDate) == -1 { // 현재 날짜보다 이전 날짜일 경우
switch dateHabitState{
case true:
weeklyHabitState.append(.done)
case false:
weeklyHabitState.append(.doNot)
case nil:
weeklyHabitState.append(.dayOff)
case .some(_):
break
}
} else {
if dateHabitState == false {
weeklyHabitState.append(.notStart)
} else {
weeklyHabitState.append(.dayOff) //(추가된 코드)
}
}