포도가게의 개발일지
클린 아키텍처 2부 본문
세가지 패러다임
- 객체지향과 함수형을 공부하면서 이렇게 아키텍쳐를 설계하면 test 또는 좀 더 유연한 프로그램을 짤 수 있다고 생각하였지만, 무엇을 앞선 개발자들이 개발자들의 특정 행동을 포기함(막음)으로써 이러한 3가지의 패러다임을 가져왔는지 알 수 있었다..
- 띵언: 오히려 소프트웨어는 과학과 같다. 최선을 다하더라도 올바르지 않음을 증명하는데 실패함으로써 올바름을 보여주기 때문이다.
구조적
- 제어흐름을 직접적으로 변환하는것을 막음
goto문을 사용 못하게 만듬으로써 기능별로 모듈을 분리할 수 있었고, 그 기능을 저수준으로 또 다시 책임을 지는 모듈로 분리할수있었다...
구조적 프로그래밍은 프로그램을 증명 가능한 세부 기능 집합으로로 재귀적 으로 분해할 것 을 강요한다.
테스트 주도로 개발한다는 것은 반증가능성으로 주도한다는 의미가 아니일까? 때문에 테스트를 우선 작성하고 코드를 짜야되는것이 아닐까?
객체지향
- 객체지향이런 무엇일까? 상속 아니 캡슐화? 아니다 바로 다형성을 쉽게 만들어주는것이라 생각든다. 다향성의 힘은 플러그인 아키텍처로부터 오며 이것은 많은 의존성들을 독립적으로 만들어준다. OO언어들과 기존 절차지향언어의 차이를 이번에 다시 정확하게 느꼈다. oo언어들은 의존성에 대한 제어 컨트롤에 절대적인 권한을 쉽게 갖게 해준다. 물론 c에서도 다형성을 구현할수는있지만 이것은 많은 버그를 야기시키며 class를 지원해주는 언어는 이것을 쉽게 만드는 힘이 있다.
함수형
- 모든 동시성 문제는 가변 변수에서 시작된다. 불변성은 실현가능하지만 일종의 타협은 필요하다. 이벤트 소싱에대한얘기를 요즘 여러책에서 접하는데 매우 신박한 접근방법인거같고. 구현해보고싶은 방식이네요.
마지막으로 앞선 선배들이 반세기 동안 배운거는 해서는 안되는 것을 배움으로써 진화한다. 소프트웨어는 순차 분기 반복 참조로 구성된다.
'개발일기' 카테고리의 다른 글
클린 아키텍처 3부 (0) | 2023.09.18 |
---|---|
클린 아키텍처 1부 (0) | 2023.08.15 |
Docker 교과서 (0) | 2022.11.27 |
[회고]오브젝트 OOP (0) | 2022.07.03 |
준비자료 (0) | 2021.12.17 |