[TIL] 16일차 - 제목

김유원·2024년 1월 15일
0

📝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) [프로그래머스] 정수 내림차순으로 배치하기

profile
개발 공부 블로그

0개의 댓글

관련 채용 정보