Player first = GetFirst();
first.Prize(Prize.GoldMedal);
newspaper.OlimpicArticle(first, Prize.GoldMedal);
Player second = GetSecond();
second.Prize(Prize.SilverMedal);
newspaper.OlimpicArticle(second, Prize.SilverMedal);
Player third = GetThird();
first.Prize(Prize.BronzeMedal);
newspaper.OlimpicArticle(third, Prize.BronzeMedal);
즉, 선수들에게 등수에 따라 각각 금메달, 은메달, 동메달을 주고, 신문에 기사를 올리는 코드입니다. 비슷비슷하기에 첫 세줄을 복사해서 일부만 수정한 코드입니다.
이런 식으로 코딩을 할 때 가장 문제가 되는 것이 수정을 잘못하는 것이죠. 위 코드에도 이미 버그가 있습니다. third에게는 아무것도 주지 않고 first에게 금메달과 동메달을 같이 주고 있죠.
이런 실수를 막기 위해, 저는 저런 경우에는 변수의 범위를 명확하게 설정하곤 합니다.
즉,
{
Player first = GetFirst();
first.Prize(Prize.GoldMedal);
newspaper.OlimpicArticle(first, Prize.GoldMedal);
}
{
Player second = GetSecond();
second.Prize(Prize.SilverMedal);
newspaper.OlimpicArticle(second, Prize.SilverMedal);
}
{
Player third = GetThird();
first.Prize(Prize.BronzeMedal); // first : 선언되지 않은 변수
newspaper.OlimpicArticle(third, Prize.BronzeMedal);
}
물론 변수를 선언할 필요가 없는 루아 같은 경우에는 쓸 수 없는 꼼수이긴 합니다만.
댓글 없음:
댓글 쓰기