Skip to content

Latest commit

 

History

History
27 lines (13 loc) · 5.63 KB

2023 02 23 Clean Architecture.md

File metadata and controls

27 lines (13 loc) · 5.63 KB

2023 02 23 Clean Architecture

1장

책 제목에도 나오는 아키텍처란 무엇인가 아키텍처는 저수준의 세부사항과 분리된 "고수준"의 무언가를, 설계는 저수준의 구조 또는 결정사항 등을 의미할때가 많다. 하지만 실제로 하는 걸 보면 아키텍처와 설계를 나누는 의미는 의미가 없다. 하지만 중요한 것은 아키텍처든 설계든 그 행위 자체를 행하는 것이다. 최근에 느낀건데 사람이 많아지고 해야하는 일이 많아 지면 물론 당연하게도 프로젝트에 많은 코드들이 추가된다. 추가되었다는 뜻은 그만큼 봐야할 코드들이 많아진다는 뜻이다. 팀원들간의 약속이 있다고 해도 메소드나, 변수나 이름이 명확하지 않으면 어떤 의도로 만든건지, 어떻게 가져가서 써야하는지 헷갈릴때가 있다. 이런 헷갈리는 내용을 이해하기 위해 시간을 써야하는 행위를 사람의 수만큼 반복한다는 것은 그만큼 일의 효율이 떨어지게 된다는 것을 의미한다. 그렇기 때문에 내가 짠 코드를 다른사람이 이해하기 쉽게, 보기 편하게 제작하는 것에 의미를 두고 아키텍쳐를 구축해야 한다는 것을 강조했던 챕터이였다.

2장

아키텍처를 통해서 하나의 기능을 튼튼하게 만들면 수정과 유지보수가 편하다는 것을 강조하는 챔터였다. 이 책에서도 강조하지만 모두들 작업(코딩)을 하면서 바쁘니까 라는 이유로 설계하지않고 빨리빨리 작업을 하면 안된다고 이야기 한다. 내 가장 최근 경험으로 짧은 시간에 작업을 해야했었다. 책에서 본것처럼 공책에 정리도 하면서 해당 클래스는 이렇게, 해당 메소드는 이렇게 미리 적어놓고 보면서 코딩을 하려고 했으나 확실히 시간이 부족해지면 다 무시하고 어떻게든 완성시키려고 노력하게 되었다. 이런 내 자신을 반성하지만 과연 다음엔 이렇게 하지 않을 수 있을까 걱정된다. 처음엔 오래걸려서 급하게 급하게 했지만 계속 연습하면 빠르게 할 수 있지 않을까 생각하기도 한다. 처음이니까 잘 안풀렸다면 계속 연습해서 구조를 짜고 작업하는 쪽으로 노력해 보아야 겠다.

3장

구조적 : goto문장의 문제를 제시. 제어흐름의 직접적으로 규칙을 부여했다. (if, while ...) 객체지향 : 제어흐름의 간접적인 규칙을 부여한다. 함수형 : 할당문에 대한 규칙 부여. 이러한 프로그래밍 패러다임은 프로그래머에게 권한을 박탈, 즉, 프로그래머가 할 수 있는 행위들을 제한하는 방식이다. 이 제한은 프로그래머가 실수하는 행위를 방어하거나, 다른 프로그래머가 개발된 코드를 볼때 보기 편하게 하기 위해서 이러한 제한들을 한게 아닐까 생각한다. 결국 아키텍처는 코딩에 규칙을 부여하는 행위라고 생각한다. 여기서 규칙은 개발에 제한을 거는 것이라 생각한다. 이런거 저런거 하지말고, 이런 방식으로 최대한 개발해보자 라는것을 아키텍처라고 생각한다. 이러한 패러다임은 결국 아키텍처를 위해서 프로그래머에게 권한을 뺏어가서 규칙을 볼 수 있도록 유도했던게 아닐까 생각한다.

4장

프로그래밍은 수학보다는 과학에 가깝다. 왜 작동되는 것인지, 이게 문제가 없는 코드인지를 증명하는 것은 쉽지않다. 그래서 과학처럼 엄밀히 내용이 사실임을 증명하는 방식이 아니고, 서술이 틀렸음을 증명하는 방식으로 동장한다. 해당 로직이 옳다 가 아닌, 테스트를 해보니까 버그가 없었다 쪽으로 프로그램을 짜야할 것 같아보인다.

5장

객체지향언어는 데이터와 함수들의 조합이라고 할 수 있고, 실제 세계 모델링하는 새로운 방법 이라고 이야기 할 수 있다. OO에 대해 설명은 쉽지 않지만, 객체지향이라고 불리기 위해서는 캡슐화/상속화/다형성 이 보장되어야 한다. 지금 C#에서 쓰는 캡슐화는 절재 캡슐화가 아니라고 한다. 이 캡슐화는 C언어에서 참 잘 만들어 졌었다. 내부에 데이터를 어떠한 방식으로도 가져올 수 없기때문에 데이터를 안전하게 보호할 수 있었다. 하지만 C#으로 올라오고, Java 같은 언어를 보면 캡슐화는 거의 없고 오버로딩과 오버라이딩을 사용하면서 private 으로 데이터를 숨겨준다. 이 숨겨주는 기능 자체가 캡슐화를 개발자에게 할 수 있는 권한을 준다는 뜻이다. 위에서 패러다임은 권한을 가져가는 방식으로 진행되었지만 이부분에 있어서는 개발자에게 권한을 줌으로써 실수를 하거나 그 규칙을 어기게 되면 캡슐화를 하기가 쉽지 않아진다. 즉, 권한을 모두 빼앗아 자동 캡슐화가 안되기 때문에 C#은 캡슐화가 많이 망가졌다라고 이야한다. 상속은 C#은 적당히 하는데 최근 언어중에 OO를 가장 잘 구현된 것이 다형성이라고 한다. 클래스를 상속받고 굳이 새로 만들지 않고 중복되는 내용을 바로 부모 객체로 보내고, 상속받은 자식은 그 내용을 쉽게 수정하기 때문에 다형성 하나는 완벽하게 잡았다고 책은 주장했다.

6장

함수형 프로그램은 정말 새로웠다. 모든 내용의 함수를 가져와 작성하고, 새로운 로직은 거의 없었다. 이미 있는 함수를 연결해서 새로운 함수를 제작하는 방식이 너무 신기했다.