• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

좋은 코드

21.09.07 23:06 작성 조회수 88

0

안녕하세요 강사님
 
원론적인 질문이 될 것 같은데요
해당 강의에서 구현 하신 건, 요역하자면, 플레이어가 죽고, 파괴 애니메이션을 보여주기 위해서 게임오버ui가 나타나기전에 약간의 딜레이를 추가 하는 거였잖아요
 
그 방법이 3가지가 있을거라고 하시면서
For 루프
Invoke
coroutine을 말씀하셨는데
 
저는 invoke는 몰랐었기에, 생각을 못 했고
For는 초반부에 타이머를 만드는 것과 같은 방식으로 구현 하실 테고
Coroutine이야 불러줄 함수를 coroutine으로 만들어 주면 될거라 생각을 했습니다
 
이렇게, 같은 결과가 도출이 되는 여러가지 코드가 있을 경우 어떤 코드가 보다 좋은 코드인지 어떻게 결정을 하나요?
 
 

답변 1

답변을 작성해보세요.

0

안녕하세요. 대답하기 쉽지 않은 질문같은데요. 

우선 고려해야 할것들이 많이 있습니다. 

상황에 따라 다르다는 말씀을 드리고 싶은데 그것에 대한 기준이 궁금하실 거니까요

이게 허용자원과 시간 이라고 생각하면 됩니다. 

쉽게 생각하면 쉬운 일이지만 어렵게 생각하면 정말 어려운 일인것 같습니다.

프로그래밍이란게 하나의 철학이고 선택의 연속이니까요.

시간도 몇가지로 나뉩니다. 

1. 프로그래밍에 걸리는 시간

2. 구현 복잡도가 낮은 시간 (잘 동작하는 클래스가 있다면 그냥 구조지향보다 코드 작성이 빠릅니다)

     다만 디버깅에 더 많은 시간이 걸릴수 있습니다. 

3. 게임 내부적으로 작동하는 물리적인 시간 (성능 관련시간 :속도)

4. 성능 관련 (디스크를 써서 사용하여 메모리를 적게 쓰는 방향 - 여기서는 관계없습니다)

보통 이정도로 나뉘는데요 이중에서 제일 적절하게 생각해야 할 문제를 선택해야 해야 합니다.

지금 같은 경우에는 for 를 쓸때 이걸 제일 쉽게 쓸수 있다면 이것이 좋은 방법중의 하나겠죠

(지금까지 많이 사용해왔다면 프로그래밍에 걸리는 시간이 짧습니다. )

 

Invoke 같은 경우도 나쁘지 않습니다 (프로그래밍에 걸리는 시간도 더 낮고 구현 복잡도도 낮습니다 )

그런데 이해를 못한다면 쓰면 안되죠

 

코루틴 같은 경우에도 더 마찬가지 입니다. ( 이해하기 어렵기때문에 오류가 생긴다면 더 오류를 잡는데 오랜 시간이 걸릴수도 있습니다. 지금상황에 코드 구현으로 본다면 이걸 쓰느니 Invoke 를 쓰겠네요. 로직이 더 쉽고 현재 상태에서 필요한 기능이 그렇게 많지는 않으니까요)

결국 걸리는 시간에 따라서 선택을 해야하는 문제입니다.  (디버깅 속도,  구조적(클래스관점)속도, 코드의 타이핑 속도, 메모리의속도, 저장의 속도 등을 고려해서 판단을 하는 것입니다.)

답변이 진짜 어려운 문제입니다. 이해해 주시길 바랍니다 좋은 밤 되세요 ^^