티스토리 뷰

상당히 단골 소재로 사용되는 소재인 '초기화'.

다만, 실제로 써 보면 이 만큼 머리 아픈 요소도 별로 없다. 당연한 것이, 초기화 순서가 잘못되면 NullException이 뜨는데, 이 순서를 맞추는 것이 조금 만 복잡해 져도 머리가 아파진다.

그렇기 때문에 이를 대처하기 위한 초기화 방식에도 종류가 다소 나뉘는 편.

이전에는 '게임 오브젝트의 라이프 사이클과 이에 의한 난점'을 중점으로 서술했다면, 오늘은 '초기화' 그 자체에 집중 해 보자.


외부 클래스 주체의 초기화

초기화를 자기 자신이 시행하는 것이 아닌, 다른 총체 역할을 하는 클래스에서 하는 방식.

Pacade 디자인과 함께 쓰면 강력한 초기화 방법으로, 초기화 순서와 시점이 확실하게 명시되기 때문에 이래저래 코드를 파악하기가 수월하다는 특징이 있다.

초기화를 다단계로 구성할 수가 있다는 것도 강점에, 각 클래스 간의 상호관계를 명시적으로 노출시킬 수도 있고, 외부 클래스에서 필요한 변수를 파라미터로 받아올 수도 있어 작업 효율이 높은 편인 것도 장점이다.

 

그 대신이라고 할까, 초기화를 하는 객체와 초기화가 되는 객체가 서로 상하관계가 아니라면 사용하기가 껄끄러운 편.


Awake - Start

오브젝트 라이프 사이클에 편승해서 초기화 하는 방식으로, 가장 기본적으로 사용하는 초기화 방식.

그런 만큼 이래저래 편한 구석이 많은 편이다. 특히 '초기화 시점이 명확하게 정해져 있다'는 점 덕분에 언제 초기화가 될 것인지, 되야하는 지 명확한 요소들은 이쪽으로 초기화 하는 것이 편하다.

 

이러한 특성 상, 같은 오브젝트 안에 들어가 있는 컴포넌트 구조에 쓰기가 좋은 초기화 방식이기도 하다.

이런 경우에는 보통 Awake에서 GetComponent를 하고, Start에서 세부 초기화를 하는 편.


프로퍼티

get; set; 이 프로퍼티가 맞다.

일반적으로는 변수에 대한 접근 제한을 거는 용도로 사용하는 편이지만, 사실 '초기화 시점을 자유롭게 가져가기 위해서' 사용하는 것도 가능하다.

그 대표적인 예시가 바로 싱글톤. 현재 보편적으로 사용되는 싱글톤 구조는 프로퍼티로 최초 호출하면 그 때에 생성되도록 만들어지는 구조인데, 이것이 지금 언급 중인 프로퍼티를 이용한 초기화의 형태에 해당한다.

 

다만, '초기화 시점이 자유롭다'라는 점이 단점으로 작용하기도 하는데, 그냥 프로퍼티로 호출하는 최초 호출에 초기화가 되는 구조다 보니, '명백한 시작점을 찾기가 힘들다'는 문제가 있다.

싱글톤 같은 경우에는 반 영구적으로 운용되는 요소이다 보니까 이런 문제가 덜한데, 그게 아니라고 한다면 이래저래 복잡해지기 좋은 편인 셈이다.

 

대신이라고 할지, 초기화 시점이 자유로운 데다가 접근 제한도 자연스럽게 가져가다 보니, 시스템 자체는 안정적으로 굴러가는 편. 때문에 복잡한 초기화 구조를 이루어야 한다면 이 방식이 가장 적합한 편이다.


오늘은 초기화를 하는 3가지 방법에 대해서 알아보았다.

물론, 코딩이라는 것에 한계는 그다지 없는 탓에, 이 3가지 이외에도 여러 종류가 존재할 수도 있다.

다만, 어지간 하면 위 3가지 만으로도 충분히 프로그램을 구성할 수 있을 것이다.

무엇을 선택할 것인가... 는 자신이 한번 잘 고민 해 보자.

[사실 본인은 이 3가지를 섞어서 구사하는 편이다. 작성하다 보면 초기화의 특성에 따라서 따라서 방식을 나누고 있는 편...]

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함