Fall in IT.

(Golang) 캡슐화에 대하여 간단 정리 본문

프로그래밍언어/Golang

(Golang) 캡슐화에 대하여 간단 정리

D.Y 2024. 1. 6. 21:06

안녕하세요.

오늘은 캡슐화에 대해서 아주 간단하게 정리해보겠습니다.

 

캡슐화

# Date 구조체의 필드값을 모두 퍼블릭으로 선언
type Date struct {
  Year int
  Month int
  Day int
}

# Date 구조체의 필드값을 모두 프라이빗으로 선언
type Date struct {
  year int
  month int
  day int
}

 

구조체의 필드값을 퍼블릭으로 선언하지 않고 프라이빗으로 선언하는게 왜 중요할까?

year, month, day에는 값의 범위가 정해져 있는데 가령, month는 1이상이고 12이하여야한다. year, day도 마찬가지로 범위가 존재한다.

이때, 상세 필드값을 퍼블릭으로 열어주게 되면 값을 설정할때 적절한 유효성 검사를 할 수 없게 된다.

 

 

조금 더 구체적으로 얘기해보면,

 

구조체의 필드를 프라이빗으로 선언하는것이 중요한 이유는 

  1. 데이터 보호
    프라이빗 필드는 구조체 외부에서 직접 접근할 수 없으므로 외부에서 예기치 않은 방식으로 데이터가 변경되는 것을 방지할 수 있다.
  2. 인터페이스와 구현의 분리
    사용자는 구조체의 메서드를 통해서만 데이터에 접근할 수 있으므로 구조체의 내부 구현을 변경하더라도 사용자에게 영향을 미치지 않는다. 이는 유지보수와 확장성을 향상 시킨다.
  3. 제어된 데이터 접근
    개발자는 메서드를 통해 데이터 접근을 제어할 수 있다. 예를들어, 특정 조건을 만족할 때만 데이터를 수정하도록 할 수 있으며 데이터 유효성 검사를 적용할 수 있다
  4. 추상화 수준의 향상
    구조체의 사용자는 구현 세부 사항보다는 구조체가 제공하는 기능에 집중할 수 있다. 이는 코드 가독성과 이해도를 높여준다.

 

캡슐화는 객체 지향 프로그래밍의 핵심 원칙 중 하나로 객체의 상세 구현 내용을 숨기고 사용자에게는 필요한 인터페이스만 제공하는 것을 의미한다. 이를 통해 유연하고 확장성이 높은 코드를 유지할 수 있다.

Comments