일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 클린코드
- Validation
- Object
- UNiQUE
- nodejs
- futureself
- 일상속귀한배움
- 독후감
- nodemailer
- BOOK
- 개발자
- OOP
- Study
- PRISMA
- serverless
- 퓨처셀프
- Nestjs
- 자청
- 세이노의가르침
- 스터디
- 역행자
- 오브젝트
- 부자아빠가난한아빠2
- 객체지향의사실과오해
- 조영호
- AWS
- validator
- typescript
- 북스터디
- googleapis
- Today
- Total
목록객체지향의사실과오해 (8)
우당탕탕 우리네 개발생활
이 글은 조영호님의 책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다. 개념 관점(Conceptual Perspective)에서 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현한다. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다.명세 관점(Specifiction Perspective)에 이르면 사용자의 영역인 도메인을 벗어나 개발자의 영역인 소프트웨어로 초점이 옮겨진다. 명세 관점에서 프로그래머는 객체가 협력을 위해 '무엇'을 할 수 있는가에 초점을 맞춘다.객체지향 설계 분야의 오래된 격언인 "구현이 아니라 인터페이스에 대해 프로그래밍하라"를 따르는 것은 명세 관점과 구현 관점..
이 글은 조영호님의 책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다. 여행 중에 다른 마을로 이동해야 하는데 길을 모른다고 가정해 보자. 이 경우 사람들은 다음의 두 가지 방법 중 하나를 이용해 길을 찾는다.지나가는 사람에게 마을까지 가는 길을 직접 물어 보기기능적이고 해결책 지향적인 접근법이다.지도에 표시된 길을 따라 가기실세계의 지형을 기반으로 만들어진 추상화된 모델이다.구조적이고 문제 지향적인 접근법이다.지도 은유의 핵심은 기능이 아니라 구조를 기반으로 모델을 구축하는 편이 좀 더 범용적이고 이해하기 쉬우며 변경에 안정적이라는 것이다.사람들에게 직접 길을 묻는 접근법은 기능에 구조를 종속시키는 방법이며 지..
이 글은 조영호님의 책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다. 훌륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다. 역할과 책임이 흐릿할수록 발작을 일으키는 객체를 도와줄 어떤 협력자도 찾지 못할 것이다.자율적인 책임설계의 품질을 좌우하는 책임자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체다. 타인이 정한 규칙이나 명령에 따라 판단하고 행동하는 객체는 자율적인 객체라고 부르기 어렵다.적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 따라서 협력에 참여하는 객체가 얼마나 자율적인지가 ..
이 글은 조영호님의 책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다. 인간이 어떤 본질적인 특성을 지니고 있느냐가 아니라 어떤 상황에 처해 있느냐가 인간의 행동을 결정한다. 즉, 각 개인이 처해 있는 정황 또는 문맥(context)이 인간의 행동 방식을 결정한다는 것이다. 여기서 인간의 행동을 결정하는 문맥은 타인과의 협력이다.객체지향에 갓 입문한 사람들의 가장 흔한 실수는 협력이라는 문맥을 고려하지 않은 채 객체가 가져야 할 상태와 행동부터 고민하기 시작한다는 것이다.개별적인 객체의 행동이나 상태가 아니라 객체들 간의 협력에 집중하라.협력요청하고 응답하며 협력하는 사람들협력은 한 사람이 다른 사람에게 도움을 ..
이 글은 조영호님의 책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다. 초기의 지하철 노선도는 실제와 유사한 물리적인 지형 위에 구불구불한 운행 노선과 불규칙적인 역 간의 거리를 사실적으로 묘사하고 있었다. 문제는 이렇게 사실적인 정보가 오히려 지하철을 이용하는 승객들로 하여금 노선도를 이해하기 어렵게 만들었다는 점이다.이러한 지하철 노선도를 개선한 사람은 해리 벡이라는 분이다. 이 개선의 핵심은 '정확성'을 버리고 '목적'에 집중하는 것이었다. 승객은 정확한 지형이 아닌 그저 언제 어떤 지하철로 갈아타야 하는지에 대한 정보만이 필요했다. 해리 벡은 지하철 노선을 추상화했다.추상화를 통한 복잡성 극복현실 세계는 ..
이 글은 조영호님의 책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다. 객체지향과 인지 능력인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라본다. 많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이유는 객체지향이 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지 능력에 기반을 두고 있기 때문이다.객체란 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다.객체지향 패러다임은 소프트웨어의 세계 역시 인간이 인지할 수 있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다는 믿음에서 출발한다. 그러나 그 유사성은 여기까지..
이 글은 조영호님의 책을 통해 공부한 내용을 정리하기 위해 작성하였습니다. 제 개인적인 각색과 의견이 첨가되어 있어 실제 책의 내용과는 차이가 있을 수 있습니다. 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다.그럼에도 불구하고 많은 사람들이 실세계 객체와 소프트웨어 객체 간의 대응이라는 과거의 유산을 반복적으로 재생산하는 이유는 실세계에 대한 비유가 객체지향의 다양한 측면을 이해하고 학습하는 데 매우 효과적이기 때문이다.객체를 스스로 생각하고 스스로 결정하는 현실세계의 생명체에 비유하는 것은 캡슐화, 자율성을 설명하는 데 효과적이며,현실 세계의 사람들이 암묵적인 약속과 명시적인 계약을 기반으로 협력하며 목표를 달성해 나가는 과정은 메시지, 협력을 설명하는 데 효..
객체지향에 대한 공부를 시작하게 된 계기올해 설정한 백엔드팀의 긴 로드맵 중 하나가 객체지향에 근간한 개발하기이다. 그 이유 중 하나는 '코드의 책임 분리'가 확실해질 수 있기 때문이다. 현재 무거운 로직들의 경우 책임 분리가 명확하지 않아 덕지덕지 꼬여있다. 이로 인해 코드에 대한 이해가 어렵고 유지 보수는 엄두가 나지 않는다. 점점 살이 붙으면서 더 유지보수가 힘들어지고 있는 상황을 긴호흡으로 객체지향 베이스로의 전환을 통해 해결해보자고 의견이 모아졌다. 근래 합류한 훌륭한 동료가 객체지향에 대한 공부를 꾸준히 해왔고 실무에서도 적용해본 경험이 있어서 객체지향 도입에 대해 리딩을 해주고 있다. 최근 새로운 feature를 개발하면서 동료가 객체지향 방식으로 작성한 코드를 리뷰할 기회가 생겼는데 다..