• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

17:10 부근에 if(room.Prev != null)부분 질문입니다.

20.05.06 17:18 작성 조회수 91

2

위에서 Tail인 경우와 Head인 경우에 대해서 체크를 해주었는데 그 경우가 아닌 상황(방이 중간에 있는 상황)에서 선택된 방의 Prev와 Next가 null일수가 있나요?

널값에 대한 체크를 한다고 하셨는데 제대로 연결리스트가 이어졌다면 null값을 왜 체크하는지 궁금해서 여쭤봅니다.

감사합니다

답변 1

답변을 작성해보세요.

4

안녕하세요,

우선 기본적으로 참조 형식을 접근해서 사용할 때
null 체크를 습관하는 것이 좋습니다.
혹시라도 본인이 로직 실수를 하거나,
아니면 잘 돌아가는 코드를 남이 수정할 경우는 늘 있으니까요.

말씀주신대로 Tail인 경우와 Head인 경우를 체크는 하긴 했지만,
단순히 Head, Tail을 바꿔치기 하기 위해 사용했지
room 자체에는 아무런 수정을 하지 않았습니다.
if, else if, else 형태가 아니라 단순한 if, if, if인 것에 주의하세요!

만약 room이 Head인 상황이라면,
room.Prev는 여전히 null인 상태일텐데
여기서 room.Prev.Next를 하면
프로그램이 크래시 나게 될겁니다.

여담이지만 서버가 크래시 나는 상황의 대부분은 이런 간단한 버그(null체크 등)에서 비롯됩니다.
(유저들은 그걸 모르고 퍼블리셔 측 서버 관리자한테 항의를 하죠 ㅎㅎ)