혼자 문서화를 잘하는 개발 팀이라면? 모르겠지만! 개발을 하면서 제품의 특정 타입들을 ( male : 1, female : 2) 숫자로 표기하는 것은 유지 보수 측면에서 혼란이 올 수 있습니다.
특히! 다수의 사람들 아니 내가 짠 코드지만 6개월 있다 다시 내 코드를 보면
"이 숫자 2가 어떤 분기 처리를 하려고 2라고 표현한 거지?"
이런 상황에 놓일 수 있습니다. Dart에서 enum 을 이용해 열거형을 만들어 타입을 명확히 해보겠습니다!
enum CarType { SUV , SPORTS , COMPACT } // 안에는 타입들을 정의
간단합니다.
enum은 클래스 안에서 정의할 수 없고 class 밖에서 정의하거나 타입들이 상당히 많아지면 따로 파일로 분리해서 리소스를 관리하는 게 유지 보수 측면에서 더 좋다고 생각합니다.
enum Gender { male, female }
class 밖에서 enum타입을 정의해주고 Gender라는 enum 타입으로 Gender.male | Gender.female처럼 사용할 수 있습니다. male을 1 , female을 2라 임의로 의미를 부여하는 것보다 더 코드가 명확해지고 분기처리 하기 수월해졌습니다!
void updateColor(Gender selectedGender) {
if (selectedGender == Gender.male) {
if (maleCardColor == inactiveCardColor) {
maleCardColor = activeCardColor;
femaleCardColor = inactiveCardColor;
} else {
maleCardColor = inactiveCardColor;
}
}
if (selectedGender == Gender.female) {
if (femaleCardColor == inactiveCardColor) {
femaleCardColor = activeCardColor;
maleCardColor = inactiveCardColor;
} else {
femaleCardColor = inactiveCardColor;
}
}
}
// male 카드
Expanded(
child: GestureDetector(
onTap: () {
setState(() {
updateColor(Gender.male);
});
},
child: ReusableCard(
receivedColor: maleCardColor,
cardChild:
IconContent(icon: FontAwesomeIcons.mars, label: 'Male'),
),
),
),
// female 카드
Expanded(
child: GestureDetector(
onTap: () {
setState(() {
updateColor(Gender.female);
});
},
child: ReusableCard(
receivedColor: femaleCardColor,
cardChild:
IconContent(icon: FontAwesomeIcons.venus, label: 'Female'),
),
),
),