객체지향 특강 - 클래스간 의존도/결합도를 낮추기
이번 특강은 특강에 앞서 실습 자료를 전달받았다. 여러 소스파일을 보고 클래스 간 플로우차트를 그리는 것이 과제 아닌 과제 느낌의 실습이였다.
※ 강의자료의 외부 공개를 원치 않으시기에 블로그에 업로드 하지는 않았습니다.
작성된 코드 보고 클래스 간 플로우차트 그려보기
코드를 작성하기에 앞서 클래스 간 관계를 정리하는 것은 프로그래밍을 조금이라도 접해본 사람들은 누구나 하는 작업일 것이다. 하지만 막상 코딩을 시작하게 되면 코드가 지저분해 지는 경험이 많았다. 이는 특정 클래스와 다른 클래스 사이의 의존도 혹은 결합도가 높기 때문이다. 플로우차트에서 한 클래스에 너무 많은 점선이 연결되어 있다면 무언가 수정이 필요한 상태라는 것이다.
그려 본 플로우차트를 보며 코드 수정하기
앞서 언급했듯이 너무 많은 점선이 연결되어 있는 경우 그 클래스와 다른 클래스 사이에 의존도 / 결합도가 높은 상황이라는 것이다. 그리고 이러한 플로우차트는 주로 '절차적 프로그래밍 방식'에서 나온다. 절차적 프로그래밍 방식의 특징은 의존성이 높다는 것이다. 하지만 C#은 객체지향 언어이다. 객체지향 프로그래밍 방식의 특징은 의존성을 낮추고 결합도를 높이는 데에, 자율성을 높이며 응집도를 높이는 데에 있다.
응집도를 높이는 법
객체지향 언어를 다루기에 응집도를 높이는 것이 중요하다. 다음의 방법을 사용하여 응집도를 높이는 훈련을 계속 진행해야한다.
- 연관성이 없는 작업은 다른 클래스에 위임
- 객체 내부 상태를 캡슐화하고 오직 메세지를 통해 상호작용
객체지향 언어를 다루는 Unity를 공부하는 입장에서 C#을 자유롭고 능숙하게 다룰 줄 알아야 작업의 효율이 올라간다고 생각한다. 게임의 유지 보수를 위해서라도 코드가 더러워지는 것을 막아야 하는데 이러한 방법을 사용하여 최대한 코드를 깨끗하게 작성할 수 있을 것 같다.
24.05.16 Today I Learned
'Today I Learned' 카테고리의 다른 글
[TIL][Unity] Unity를 활용한 다양한 분야 특강 (0) | 2024.05.20 |
---|---|
[TIL][Unity] UI Text와 TextMeshPro (0) | 2024.05.17 |
[TIL][Github] 리드미(README.md) (0) | 2024.05.14 |
[TIL][Unity] 3주차 게임 개발 기초 개인 프로젝트 4일차 (0) | 2024.05.13 |
[TIL][Unity] 3주차 게임 개발 기초 개인 프로젝트 3일차 (0) | 2024.05.10 |