-
[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 블록의 실행 시점
- 예외가 발생한 경우: 예외가 발생하면 예외 처리 과정을 거친 후 finally 블록이 실행된다.
- 예외가 발생하지 않은 경우: 예외가 발생하지 않아도 finally 블록은 정상적으로 실행된다.
'개발일지 > 스파르타 코딩클럽 부트캠프' 카테고리의 다른 글
[TIL] 4주차 3일 유니티 입문 주차 ( 유니티 생명주기, 접근 제한자와 직렬화, 계층 구조, 로컬과 월드 좌표 ) (0) 2024.05.08 [TIL] 4주차 2일 두 번째 팀프로젝트 완 (0) 2024.05.07 [TIL] 3주차 4일 배치고사, 인터페이스와 추상클래스 (0) 2024.05.02 [TIL] 3주차 3일 (0) 2024.05.01 [TIL] 3주차 2일 팀 프로젝트 2일차 + 값 형식과 참조 형식 (2) 2024.04.30