GitBook
클린 아키텍처

3장 프로그래밍 패러다임

해서는 안 되는 것에 대하여

#클린아키텍처

#책

2023년 11월 05일

개인적으로 클린 아키텍처를 읽고 정리한 글입니다

패러다임이란 프로그래밍을 하는 방법입니다.
각 패러다임은 프로그래머에게 무엇을 해야 할지 보다 무엇을 해서는 안 되는지에 대해 정의합니다.
이번 장에서는 각 패러다임이 금지한 것이 무엇인지
그로인해 아키텍트의 입장에서 얻을 수 있는것이 무엇인지에 대해서 알아보겠습니다.

구조적 프로그래밍


금지한 것

  • goto 문장을 사용하지 않고 if/then/else/do/while과 같은 단순한 제어 구조를 사용하게 했습니다.

얻은 것

  • 모듈을 더 작은 단위로 재귀적으로 분해할 수 있습니다.
  • 분해한 세부 기능들이 테스트를 통해 거짓인지 증명할 수 있습니다.

프로그래밍은 서술된 내용이 사실임을 증명하지 않고 서술이 틀렸음을 증명하는 방식으로 동작합니다.

객체 지향 프로그래밍


금지한 것

  • 다형성을 통해 고수준 <-> 저수준 모듈 사이에 의존하지 않도록 했습니다.
  • 캡슐화를 통해 데이터와 함수를 명확히 구분하도록 했습니다.
  • 상속을 통해 코드를 재사용하도록 했습니다.

얻은 것

  • 의존성 역전이 가능해지면서 고수준 모듈은 저수준 모듈의 세부 구현에 의존할 필요가 없어졌습니다.
  • 객체 내부의 상태를 객체 자신이 결정할 수 있게 되었습니다.

함수형 프로그래밍


금지한 것

  • 런타임에서 상태가 변할 수 있는 변수를 사용하지 않습니다.
  • 가변성 분리를 통해 변수를 변경하는 컴포넌트, 변경하지 않는 컴포넌트를 분리합니다.

얻은 것

  • 동시성 애플리케이션에서 마주치는 모든문제를 해결했습니다.
    • 경합, 교착상태, 동시업데이트 등등

해서는 안 되는 것에 대하여


반세기 동안 프로그래머가 배운 것은 해서는 안 되는 것 입니다.
어떤 패러다임도 우리의 코드 작성 방식에 무언가를 보태지는 않습니다.

이 사실을 깨닫는다면 소프트웨어는 급격히 발전하는 기술이 아니라는 진실과 마주하게 됩니다.

끝.