Enemy를 코드를 정리하여 다시 만들어볼 생각입니다. 중간 링크는 공부 자료입니다. 간단 설명으로 부족한 부분을 채우고 필요할때 보기 위함입니다.
들어가기 전
생각하고 가야할껄 한번 되새기고 작성 중에도 가끔 보게 적어놓도록 하겠습니다.
KISS - Keep It Simple, Stupid : 간결하게 만들어야 그걸로 복잡한걸 만들 수 있다. (한가지 기능(함수), 한가지 책임(클래스), UI는 UI만)
HCL - High Cohesion Louse Coupling : 높은 응집도(Cohesion), 낮은 결합도 (단어 설명)
간단하게 설명하면 비슷한것들 끼리 뭉쳐야하고 서로의 의존도는 낮아야 합니다.(오해 할 수 있으니 단어 설명을 보는걸 추천드립니다.)
DRY - Don't Repeat Yourself : 복붙하지말고 반복하지마세요 (함수화, 복붙 금지)
YAGNI - You aren't gonna need it : 필요하다고 간주할 때까지 기능을 추가히자 않는것이 좋다.
리팩토링에 필요한 자료를 정리하며 공부했습니다.
GRASP - General, Responsibility, Assignment, Software, Pattern (디자인패턴)
원칙 같은걸 배우고 사용하는건 자신을 위한것도 있지만 협업을 할때 좋기때문입니다. 상속을 사용하는 이유에 대해 의문이 참 많았습니다. 왜 이걸 상속받아서 재정의 해서 사용해야하나, 그걸 질문하니 협업을 위해서 라고 하니 먼가 띵하고 꽂혔습니다. 이부분을 머리에 가지고 아래를 공부하면 좋을꺼 같습니다.
=== 일기장이라서 일기 형식으로 느낀점 적어놨습니다 스킵해도됩니다. ===
자료 조사하던중 의문이 생기는 부분인 리스코프 치환과 상속을 사용할때 예시가 만족스럽지 못해서 예시를 만들어서 가져갔습니다. 적을 만들꺼니 적을 기준으로 예를 들었습니다. 부모 클래스 Enemy와 자식 클래스 Melee Enemy ,Ranger Enemy가 있다고 과정하고 보통 예시는 Move()라는 함수를 만들어서 Enemy 부모 클래스에 만들고 Melee Enemy 클래스에 보통 상속해줘서 재정의 후 사용합니다. 요기서 의문점이 들었습니다. 어짜피 Move라는 이동 함수는 Melee든 Ranger든 같은데 Enemy 부모 클래스에서 Move를 다 만들어서 주면 좋지 않나요? 라고 선생님에게 물어봤습니다. 거기서 위와 같은 답을 얻었습니다. 전에 수업을 하면서 들은 말이 생각나네요 이해 안가도 대략적인 느낌을 알고 넘어가도된다. 이번 질문을 하며 수업때도 들었지만 까먹었던 말이 처음에 배운거라도 다시 보면 다르다라고 했던것도 생각나구요. 이래서 질문을 많이 해야하는것 같습니다. 경력이 있는 분들에게서 배운걸 흡수할려면 자신이 궁금하고 어느정도 지식을 습득한 후에 물어보면 새로운게 보이는거 같습니다.
==================================================
단일 책임 원칙 (Single Responsibility Principle) - 특정 클래스마다 하는 일을 확실히 해야합니다.
아래 참고 기본 자료 : 조정훈, 게임 프로그래머를 위한 클래스 설계.
굵은 글씨로 링크 달아논것도 같이 봐야합니다.
개방 폐쇄 원칙 (Open Closed Principle) OCP - 모듈의 수정 없이 기능 확장 가능, 인터페이스는 임의로 변경할수 없다
확장은 새 클래스로 구현, 변경은 오류 수정 할때만 객체는 부모 객체를 대체가능해야 합니다.
리스노프 치환 원칙 (LSP) - 이름만 봐도 복잡합니다. 위 자료와 링크 자료가 다르므로 링크된 자료를 보는걸 추천합니다.
인터페이스 격리 원칙 (Interface Segregation Principle) ISP - 인터페이스는 서로 격리되어야 한다. 객체는 사용하지 않는 인터페이스의 영향을 받아서는 안된다. 필요 인터페이스만 사용 가능해야한다. (미사용 인터페이스는 구현하지 않는다)
의존성 역전 원칙 (Dependency Inversion Principle) - 상위 객체는 하위 객체를 몰라야한다. 의존성 순환이 벌어지면 안된다.
일단 위 자료를 토대로 리팩토링을 위한 규칙을 짜볼 생각입니다.
'프로그래밍 공부 > 포트폴리오 정리' 카테고리의 다른 글
Day5 셰이더 정리 (0) | 2021.06.02 |
---|---|
Day 4 포트폴리오 플레이어 분석 (0) | 2021.06.01 |
Day4 포트폴리오 Enemy 정리 (0) | 2021.05.31 |
유니티 포트폴리오 셰이더 - 툰 셰이더 튜토리얼 (0) | 2021.05.11 |