추상화 가이드: 본질만 남긴다는 말은 무슨 뜻일까
Dev

추상화 가이드: 본질만 남긴다는 말은 무슨 뜻일까


객체 지향이나 설계를 공부하다 보면 추상화라는 말도 정말 많이 나옵니다. 그런데 입문 단계에서는 이 표현이 너무 넓어서 오히려 감이 잘 안 오는 경우가 많습니다. “본질만 남기고 세부사항을 감춘다”는 말이 맞긴 하지만, 실제 코드에서 그게 어떤 의미인지가 중요합니다.

이 글에서는 아래 내용을 정리합니다.

  • 추상화가 무엇인지
  • 왜 중요한지
  • 구현 세부사항과 어떤 관계가 있는지
  • 입문자가 어떤 식으로 이해하면 좋은지

핵심은 추상화는 모든 것을 감추는 것이 아니라, 지금 필요한 관점에서 중요한 개념만 드러내고 나머지 복잡함을 뒤로 미루는 설계 방식이라는 점입니다.

추상화란 무엇인가

추상화는 복잡한 현실이나 구현을 더 다루기 쉬운 개념으로 표현하는 것입니다.

예를 들어 사용자는 “결제를 요청한다”는 개념만 알면 되지, 그 안에서:

  • 어떤 API 호출이 일어나는지
  • 어떤 인증 절차가 있는지
  • 어떤 재시도가 있는지

까지 모두 알 필요는 없을 수 있습니다.

즉, 추상화는 중요한 개념을 중심으로 인터페이스를 만드는 일에 가깝습니다.

왜 중요한가

복잡한 세부사항을 매번 모두 드러내면:

  • 코드 읽기가 어려워지고
  • 사용자가 알아야 할 것이 너무 많아지며
  • 변경 시 영향 범위가 커집니다

추상화는 이런 복잡함을 줄여줍니다.

추상화와 숨김은 같은가

겹치는 부분은 있지만 완전히 같은 말은 아닙니다.

  • 추상화: 중요한 개념을 중심으로 보이게 한다
  • 정보 은닉: 내부 세부 구현을 바깥에 덜 노출한다

즉, 추상화는 “무엇을 보이게 할까”에 더 가깝고, 정보 은닉은 “무엇을 감출까”에 더 가깝다고 볼 수 있습니다.

입문자는 어떻게 이해하면 좋을까

아래 질문이 도움이 됩니다.

  • 이 코드를 사용하는 사람은 무엇만 알면 되는가
  • 지금 드러난 정보 중 너무 구현 세부사항인 것은 없는가
  • 이 인터페이스 이름이 실제 역할을 잘 표현하는가

이 질문을 통해 추상화는 단순히 인터페이스 문법이 아니라, 관점을 설계하는 일이라는 감각이 생깁니다.

자주 하는 오해

1. 추상화는 무조건 인터페이스를 만드는 것이다

인터페이스가 도구일 수는 있지만, 핵심은 개념을 적절히 드러내는 것입니다.

2. 추상화는 많을수록 좋다

불필요한 추상화는 오히려 이해를 더 어렵게 만들 수 있습니다.

3. 추상화는 현실을 단순화하니 정확성이 떨어진다

오히려 필요한 수준의 정확성만 드러내서 더 다루기 쉽게 만드는 경우가 많습니다.

FAQ

Q. 추상화는 어디서부터 연습하면 좋을까

메서드 이름, 클래스 이름, 역할 표현이 실제 개념을 잘 드러내는지부터 점검해보면 좋습니다.

Q. 추상화와 DIP는 연결되나

그렇습니다. 좋은 추상화가 있어야 구현보다 개념에 의존하기 쉬워집니다.

Q. 과한 추상화는 왜 문제인가

실제 개념보다 복잡한 간접층만 늘어나면 읽기와 이해가 어려워질 수 있기 때문입니다.

  • 구체 구현보다 개념에 의존하는 관점은 DIP 가이드와 이어집니다.
  • 객체 내부 보호는 캡슐화 가이드와 같이 보면 좋습니다.

먼저 읽어볼 가이드

검색 유입이 많은 핵심 글부터 이어서 보세요.