📝24.01.15
내일이 팀 과제의 마감일이다. 그래서 팀원들과 함께 막바지 작업을 하고 있다.
오늘 내가 한 작업이 뭔지 커밋 목록을 살펴보았는데, 오류 수정과 스타일 변경밖에 없어 오늘 TIL에 쓸 내용이 없다. 큰일이다...
그래서 오늘 한 고민에 대해서만 잠시 적어보겠다.
이 ChangeMP()
메서드를 살펴보겠다.
기존 메서드
public void ChangeMP(int amount) {
mp += amount;
if(mp < 0) mp = 0;
}
기존의 ChangeMP()
메서드는 단순히 마나의 증감을 더하는 메서드일 뿐이었다. 이 방식의 가장 큰 문제점은, 마나가 1이어도 ChangeMP(-5)
의 명령을 받아들인다는 것이다. 물론, 마나를 사용하는 메서드에서 이를 체크하는 방법도 있다. 하지만 이는 불필요한 중복 코드를 만드는 일이라 판단해 수정하기로 하였다.
바뀐 메서드
public bool ChangeMP(int amount)
{
if(mp + amount < 0)
{
UI.TextColor("마나가 부족합니다.", ConsoleColor.Red);
return false;
} else
{
UI.TextColor($"MP: {mp} → {mp + amount}", ConsoleColor.Blue);
mp += amount;
if (mp < 0) mp = 0;
return true;
}
}
이렇게 수정하면 마나가 부족한 경우 마나를 사용하지 않고, 마나가 부족하다는 안내문을 사용할 수 있다.
물론 이것은 bool
타입이 아닌 void
타입에서도 체크할 수 있다.
하지만 bool
타입으로 구현하게 된 이유는, 바로 궁수의 Skill_2()
메서드 때문이다.
public override void Skill_2(List<Monster> monsters)
{
//광역기, 한발마다 mp 닳게 몬스터 숫자 비례 mp 사용
UI.WriteLine($"궁수의 연사! {name}이 광역 공격을 시전했습니다.\n");
foreach (Monster m in monsters)
{
if (!ChangeMP(-5)) break;
m.Ondamaged(this, 80);
}
}
해당 메서드에서 마나가 부족하다면 광역기 사용을 중단하는 것을 구현하기 위해 bool
타입 메서드로 설계하게 되었다.
이런 자잘한 오류와 수정 사항들을 고민해가면서 팀 개발을 하고 있다. 내일이 마감인만큼 오늘 남은 시간과 내일 남은 시간도 충분히 노력하여 완성해야 할 것 같다.
오늘도 코딩 문제를 여럿 풀었다. 점차 난이도가 높아져서 꼭 적어둬야겠다 싶은 타인의 풀이가 늘어나고 있다. 그래서 오늘은 문제풀이 포스트가 3개이다.
📕
1) [프로그래머스] 문자열을 정수로 바꾸기
2) [프로그래머스] 정수 제곱근 판별
3) [프로그래머스] 정수 내림차순으로 배치하기