ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 3주차 5일 팀 프로젝트 진행중 , 열거형
    개발일지/스파르타 코딩클럽 부트캠프 2024. 5. 3. 22:56

     

     

    오늘 발생한 문제


    깃 허브 충돌문제

     

    일단 우리 팀은 공통 Dev 브렌치를 하나 만들고

    각자의 Dev_이름 브렌치를 만들어서

    각자 자신의 브렌치에서 작업을하고 커밋을 한 후에 공통 Dev로 가는 식으로 진행중이었는데

    내가 내 Dev 브렌치에 커밋하는 과정을 생략하고

    바로 공통 Dev브렌치로 bring Change를 했더니 내 코드에서 충돌이 발생했다.

    일단은 큰 문제는 없었어서 해결은 했으나. 아직도 정확한 원인은 파악하지 못한 상태

     

    프로젝트 내의 다른 폴더에서 기능을 사용할 수 없었던 문제

     

    이거는 정말정말 부끄럽지만 TIL이니까 솔직하게 쓰도록 하겠다. . . .

    이 전까지 잠깐 독학했을 때나 게임개발 종합반 강의를 들었을 때도 

    심지어 첫 주차 팀 프로젝트까지 나는 비쥬얼스튜디오 코드와 유니티를 쓰면서

    스크립트는 항상 스크립트 폴더 안에 있었으니까........ 다른 폴더에 있는 것을 불러오지 못해서

    문제가 약간 있었는데

    using TeamSpartaDungeonGame.Utility;

    네임스페이스를 몰라서.....

    여기까지..

     

    어제 배운 내용 이제 쓰기


    열거형 (Enums)

     

    열거형은 서로 관련된 상수의 집합을 정의할 때 사용되는데

    열거형을 사용하는 이유로 큰 것은

    • 가독성
    • 자기 문서화(Self-documenting)
    • 스위치 문과의 호환성

    세 가지를 꼽을 수 있겠다.

     

    일단 가독성이 가장 클텐데

    열거형을 사용하게되면 일련의 연관된 상수들을 명명할 수 있다. 이를 통해서

    코드의 가독성이 매우 향상된다.

    자기문서화의 경우엔 열거형은 의미있는 이름을 사용해서 상수를 명명할 수 있음으로

    상수의 의미를 명확하게 설명 가능하게 된다.

    마지막으로 스위치문과의 호환성인데

    열거형은 스위치 문과 함께 사용될 때 유용하다. 이건 코드로 살펴보겠다.

    enum MyEnum
    {
        Value1,
        Value2,
        Value3
    }

    일단 열거형을 정의하는 법은 간단하다.

    enum (열거형 이름)

    {

          (상수 이름)

          (상수 이름)

    }

    이런 식으로 정의하면 된다.

    MyEnum myEnum = MyEnum.Value1;

     

    사용은 위처럼 하면 되고

     

    중요한 건 스위치문과의 사용인데

    switch(enumValue)
    {
        case MyEnum.Value1:
            // Value1에 대한 처리
            break;
        case MyEnum.Value2:
            // Value2에 대한 처리
            break;
        case MyEnum.Value3:
            // Value3에 대한 처리
            break;
        default:
            // 기본 처리
            break;
    }

    일단 지금까지 스위치문을 사용하던 방식과 다르게

    case 0: ~ case :1 이런 방식보다

    정확하게 어디에 사용하는지 Value값을 가지고 이름을 가진 상수를 다루기 때문에

    본인의 코드를 사용할때도 협업을 할 때도 가독성이 매우 향상한다고 볼 수 있다.

    예외 처리

     

    다은은 예외처리다.

    여기서 예외란?

    예외는 말 그대로 예기치 않은 상황을 말한다. 게임으로 치면

    플레이어가 가면 안될 곳으로 갔을 때 일어나는 상황 등으로 볼 수 있겠다.

     

    예외 처리의 필요성과 장점

    • 먼저 예외 처리는 예외 상황에 대비해 프로그램을 안정적으로 유지해준다.
    • 예외 처리를 통해서 오류 상황을 처리하고, 프로그램의 실행을 계속한다.
    • 예외 처리는 프로그램 안정성을 높이고 디버깅을 용이하게 해준다.

    그럼 예외 처리 구현에 대해서 ARABOZA

     

    C#에서는 try-catch 블록으로 예외 처리를 수행한다.

    try 블록 내에서 예외가 발생할 수 있는 코드를 작성하고

    catch 블록에서 예외를 처리한다.

     

    try
    {
        // 예외가 발생할 수 있는 코드
    }
    catch (ExceptionType1 ex)
    {
        // ExceptionType1에 해당하는 예외 처리
    }
    catch (ExceptionType2 ex)
    {
        // ExceptionType2에 해당하는 예외 처리
    }
    finally
    {
        // 예외 발생 여부와 상관없이 항상 실행되는 코드
    }

    강의자료에 나온 예시코드다. 잘 설명이 되어있긴한데

     

    조금 이해가 쉽게 게임에 빗대어서 봐보자면 아까 말한 플레이어가 가선 안되는 공간에 어쩌다 갔다고 생각해보자.

    try에  플레이어의 좌표가 공간과 마주치는 코드를 작성한다.

    catch 에 플레이어가 원래자리로 되돌아가거나, 벽에 막히는 등의 예외 처리를 작성한다.

    라고 볼 수 있다.

     

    참고로 catch 블록은 위에서부터 순서대로 실행되며, 예외 타입에 해당하는 첫 번째 블록이 실행된다.

    예외 타입은 상속 관계에 있는 경우라면 상위 예외 타입의 catch블록이 먼저 실행된다.

    catch 블록에서는 예외 객체를 사용해서 예외에 대한 정보를 액세스 할 수도 있다.

     

    finally 블록은 예외가 발생하지 않아도 항상 실행되는데

    finally 블록은 예외 발생 시 정리 작업이나 리소스 해제 등의 코드를 포함할 수 있다.

    • finally 블록의 실행 시점
      1. 예외가 발생한 경우: 예외가 발생하면 예외 처리 과정을 거친 후 finally 블록이 실행된다.
      2. 예외가 발생하지 않은 경우: 예외가 발생하지 않아도 finally 블록은 정상적으로 실행된다.

     

Designed by Tistory.