사상 - 프로그래밍 이데올로기

아키텍처 기본 기법

좋은 코드의 기초원리

  • 추상
  • 캠슐화
  • 정보 은닉
  • 패키지화
  • 관심의 분리
  • 충족성, 완정성, 프리미티브성(원시성, 순수성)
  • 정책과 구현의 분리
  • 인터페이스와 구현의 분리
  • 참조의 단일성
  • 분활정복

좋은코드에는 패턴이 있다.

추상

추상이란 개념적으로 명확한 선 긋기를 수행하는 것이다. 추상은 사상과 일반화라는 2가지 관점에서 정리된다.

  • 사상 - 복잡한 대상의 몇가지 성질을 버리고 특정한 성질에 주목하는 것
  • 일반화 - 구체적인 대상으로부터 공통 성질을 추출해서 더욱 범용적인 개념으로 정식화 하는것

복잡함에 대한 대항 수단

추상은 인간이 복잡한 문제에 집중할 때 사용하는 기초적인 원리이다.

사상과 일반화를 구사

추상화는 뛰어난 아키텍처를 구축하기 위해 필요한 프로그래머의 기초 기술 불필요한 것은 버리고 본질을 파악하도록 한다.

캡슐화

데이터와 로직을 모듈이라는 껍질로 감싸는 것을 캡슐화라고 부른다. 다른 모듈은 서로 다른 별개의 것으로 분리해서 다룬다

추상개념이 섞이지 않는다.

관련있는 요소끼리만 특정 추상 개념을 담당하도록 모듈로 모은다.

  • 관련없는 요소가 섞이지 않기 때문에 코드가 읽기 쉬워진다.
  • 변경 시의 영향이 모듈 안으로 한정된다.
  • 영향도가 명확해지므로 코드의 변경이 쉬워진다.
  • 각각 독립된 부품이므로 재사용성이 높아진다.
  • 작은 단위로 분활되므로 복잡한 문제에 대처할 수 있다.

정보 은닉

필요 없는것은 보여주지 않는다 모듈의 구현은 해당 모듈을 사용하는 클라이언트로 부터 은닉한다. 모듈의 데이터는 외부에서 직접 접근할 수 없도록 한다. 모듈의 함수는 최대한 비공개로 한다.

모듈이 상세부분을 은닉하면 인터페이스가 작아지고 정보교환이 단순해지며 코드 전체의 복잡성을 낮출수 있다. 공개된 부분이 작으면 모듈 내부에서 변경이 끝날 가능성이 커진다 이렇게 하면 변경의 파급효과를 최소한으로 억제할수 있다.

  • 캡슐화 - 관계가 있는 요소를 모아 모듈화 하는것, 관계가 깊은 데이터와 함수를 한군데 모은다.
  • 정보은닉 - 모듈의 내부 상태나 내부 함수를 은닉하는 것이다. 내부에 대한 외부로부터의 직접적인 경로를 차단한다.

참조