[Asset 제작 일지] 대화 시스템 만들기 11 : 리팩터링
이제 더러운 코드를 정리할 때가 왔다.
최근에 마틴 파울러의 리팩터링을 구매했고, 읽기 시작했다. 다는 아니지만.
책의 '3장 : 코드에서 나는 악취'파트를 참조해서, 이상한 부분을 찾아 고쳤다.
대상은 DialogBase.cs와 DialogManager.cs이다.
오늘은 11시쯤 시작해서, 새벽까지 좀 오랫동안 작업했다.
#1 enum State의 기이한 이름
public enum State
{
Show,
Texting,
WaitForInput,
Wait,
Hide
}
- WaitForInput과 Wait의 모호함
- Show와 Texting의 모호함
>> Show, Wait는 쓰이고 있지 않은 State였다. 해당 enum을 지우고 생각해 보았다.
실제로, State는 실행, 대기, 비활성화의 3개만 있어도 충분했다. 해당 부분을 다음과 같이 변경했다.
public enum State
{
Active,
Wait,
Deactivate
}
#2 DialogText Class의 기이한 이름
- DialogText라는 이름의 모호함
: 이 클래스는 string으로 쓰인 Text를, DialogManager가 받아들일 수 있도록 DialogCommand로 변환하는 역할을 한다.
해당 클래스는 데이터 단위로 넘겨져 출력 메서드에서 사용된다.
>> DialogText보다는, DialogData로 명명하는 것이 적절한 듯 하여 변경했다.
- _originalText의 의미가 없음 >> 삭제
#3 DialogData Class에 있는 데이터 뭉치
1) DialogData Class
- Color, Size, OpenTagger, CloseTagger는 데이터 뭉치
>> 해당 내용은 텍스트의 표시 형식에 관한 내용이다. DialogFormat 클래스로 따로 추출해주었다.
하는 김에, DialogManager가 Color와 Size를 매번 검사하지 않아도 되도록 get/set을 사용했다.
#4 Show의 긴 매개변수 목록
많은 변경이 있었다. 기존에는 string, skipable, callback 등의 많은 데이터를 전달했다.
그러나 매개변수 목록이 길어지면 그 자체로 이해하기 어려우므로, DialogData와 Character를 전달하는 것으로 정했다.
또한 이 과정을 거쳐서, 기존에는 List 통째로 skip과 callback을 정했으나 이제는 List의 item 하나하나에서 정할 수 있게 되었다.
DialogData의 필드는 이렇게 정리했다.
생성자 또한 string, skip 여부, callback을 정할 수 있게끔 다듬었다.
음... 책을 읽어보니 아직 리팩터링을 할 수 있는 구문은 많은 듯 한데, 일단은 여기까지 하려고 한다.
다 읽고 나서야 완벽하게 수정할 수 있을 것 같다.
내일은 Activate할 때, 등장 애니메이션을 한번 작업해보자.
그리고 오브젝트를 프리팹화하여 사용자가 쉽게 에셋을 사용할 수 있도록 하겠다.
에셋 가이드라인은 아마 그 다음날 작성하겠지.
자, 그럼 오늘은 여기까지.
해당 커밋 보러가기
'개발 일지 > 소프트웨어' 카테고리의 다른 글
[Asset 제작 일지] 대화 시스템 만들기 13 : 에셋 스토어 업로드 (0) | 2020.05.16 |
---|---|
[Asset 제작 일지] 대화 시스템 만들기 12 : 프리팹 작업 (0) | 2020.04.20 |
[Asset 제작 일지] 대화 시스템 만들기 10 : 태그 오류 해결하기 (0) | 2020.04.17 |
[Asset 제작 일지] 대화 시스템 만들기 09 : 문장 데이터 불러오기 (0) | 2020.04.16 |
[Asset 제작 일지] 대화 시스템 만들기 08 : 커맨드 구현 (3) (0) | 2020.04.15 |
댓글
이 글 공유하기
다른 글
-
[Asset 제작 일지] 대화 시스템 만들기 13 : 에셋 스토어 업로드
[Asset 제작 일지] 대화 시스템 만들기 13 : 에셋 스토어 업로드
2020.05.16 -
[Asset 제작 일지] 대화 시스템 만들기 12 : 프리팹 작업
[Asset 제작 일지] 대화 시스템 만들기 12 : 프리팹 작업
2020.04.20 -
[Asset 제작 일지] 대화 시스템 만들기 10 : 태그 오류 해결하기
[Asset 제작 일지] 대화 시스템 만들기 10 : 태그 오류 해결하기
2020.04.17 -
[Asset 제작 일지] 대화 시스템 만들기 09 : 문장 데이터 불러오기
[Asset 제작 일지] 대화 시스템 만들기 09 : 문장 데이터 불러오기
2020.04.16