본문 바로가기
Programming/하루 일기

나는 왜 객체 지향 프로그래밍을 사용해 왔을까?

by peter paak 2022. 3. 22.
728x90

velog에서 좋은 글을 보고 생각을 정리한 내용이다
최근에 별 생각없이 사용하는 기술에 대해 너무나 당연해서 왜 라는 질문은 하지 않았던 것 같다
막상 대답을 하려면 못하는데도 말이다

해당 글은 왜 객체 지향 프로그래밍을 사용하고, 핵심이 무엇인지 잘 설명되어 있다

왜 객체 지향 프로그래밍을 해야될까?

이런 질문에 선듯 답을 하기는 어렵다.
그냥 좋은 코드를 작성하기 위한 방법이고 많은 사람들이 그 방법을 사용하기 때문이다.

아래 글에서 말하는 이유는 바로 좋은 코드를 작성하기 위함이라는 것이다

 

그럼, 좋은 코드는 무엇일까?
지금까지 내가 생각해왔던 좋은 코드는 아래와 같다

  1. 알아보기 쉬운 코드
  2. 변경에 용이한 코드

 

좋지 않은 코드는 일정한 규칙이 없이 복잡도가 시간이 지날 수록 높아진다
즉, 치우지 않은 방과 같다.
음식을 먹고 옷을 벗어두고 시간이 지나면 쓰레기와 빨래더미가 쌓이듯 말이다
누군가가 우리 집에 찾아와 휴대폰 충전기를 찾으려고 할 때, 빨랫더미와 쓰레기 더미를 뒤지면서 욕을 할 것이다
미리 정리를 해놓으면 누가와도 원하는 물건을 잘 찾기 쉬울 것이다

 

좋은 코드를 작성하는 것은 방을 정리하는 것과 같다
쓰레기는 쓰레기통에, 빨래는 세탁기에 넣어서 각 도구의 역할에 맞도록 잘 나누고 묶어주는 것이다
방안의 공간을 구조화 하여 각 구조에 올바른 역할에 맞도록 책임을 주면 된다

 

하지만 누군가 쓰레기를 세탁기에 넣고 빨래를 쓰레기통에 넣는다면 어떻게 될까?
아마 치우지 않은 방처럼 어디에 뭐가 있을지 예상하지 못할 것이다

 

좋은 코드를 작성하는 것은 방을 규칙에 따라 정리하는 것과 같을 것이다
일반적인 사람들은 쓰레기를 쓰레기통에 빨래는 세탁기에 넣는다는 것을 공통된 규칙으로 알고 있다

 

그렇듯 객체 지향 프로그래밍은 개발자가 코드를 정리하는 규칙이라고 생각한다
이 규칙은 오래동안 여러 개발자들에게 발전되고 일반화되면서 가장 효율적으로 정리된 방법이기 때문에 지금까지 사용되었다 생각한다

정리하면 객체 지향 프로그래밍 사용해야 하는 이유는

  • 좋은 코드를 작성해야 한다
  • 좋은 코드는 알아보기 쉽고 변경에 용이한 코드이다
  • 좋은 코드는 일정한 규칙으로 코드를 구조화하고 정리하는 것이다
  • 객체 지향 프로그래밍은 코드를 정리하는 방법 중 가장 널리 알려진 방법이다

객체 지향 프로그래밍의 핵심

그렇다면 객체 지향 프로그래밍의 핵심은 무엇일까?

  1. 메세지
  2. 캡슐화
  3. 동적 바인딩

 

세탁기를 예로들면, 세탁기가 내부적으로 어떻게 생겼는지는 알 수 없다 (캡슐화)
하지만 단순히 세탁이라는 버튼만 눌러주면 알아서 세탁을 시작한다 (메세지)
세탁하는 세탁기는 LG 세탁기가 될 수도 있고, 삼성 세탁기가 될 수도 있다 (동적 바인딩)

 

객체 지향 프로그래밍이라는 네이밍에 의해 객체라는 존재에 집착을 하는 경향이 있었다
사실 객체는 역할에 맞는 데이터와 행위를 잘 정리해 놓은 것에 불과하다
핵심은 객체들과의 관계에서 어떤 메세지를 전달하는지가 중요하다

 

인터페이스로 협력관계를 잘 정의해놓았다면
인터페이스가 정의한 메세지를 위임받은 객체는 동적 바인딩을 통해 각자의 역할을 하게 될 것이다

참조

728x90