나는 이렇게 본다 38

Repository Pattern

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 파이썬으로 살펴보는 아키텍처 패턴 저자 : 해리 퍼시벌, 밥 그레고리 범위 : 3. 저장소 패턴 느낀 점 도메인 모델과 인프라간에 의존성을 줄여 변경에 용이하다. 가짜 저장소를 만들어 단위 테스트를 구현하는데 용이하다. 아직까지는 도메인 모델과 저장소 패턴의 장단점이 와닿지 않는다. 이번 프로젝트는 저장소 패턴을 구현하는 것인데 직접 경험해봐야겠다. 더보기 키워드 아키텍처 전반 양파 아키텍처 클린 아키텍처 저장소 패턴 - 이종립 저장소 패턴 - deviq dependency injection 덕 타이핑 abc (추상화 기반 클래스) 정리 저장소 패턴 저장소 패턴은 데..

도메인 관점에서 행동을 먼저 떠올리자

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 파이썬으로 살펴보는 아키텍처 패턴 저자 : 해리 퍼시벌, 밥 그레고리 범위 : 1. 도입 ~ 2. 도메인 모델링 느낀 점 시스템을 설계할 때, 도메인 관점에서 행동을 먼저 떠올리자. 테스트 코드를 작성할 때, 코드만 보더라도 어떻게 동작하는지 알 수 있도록 작성하자. 값 객체, 엔티티 등, 데이터 클래스와 매직매서드를 활용해보자. 동사의 경우 되도록 함수로 표현하자. 클래스 내 ‘매서드’와 ‘일반 함수’, 이 둘을 어떤 기준으로 선택, 구현해야할까? 더보기 데이터 클래스 멀티패러다임 정리 도입 추상화는 00모듈이 검색 엔진 api를 캡슐화해준 것처럼 해동을 캡슐화하는..

객체지향의 세 가지 관점(도메인, 인터페이스, 구현)

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다.설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 07 함께 모으기 요약 정리 객체지향의 세 가지 관점 개념 관점(Conceptual Perspective) 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현 소프트웨어는 도메인에 존재하는 문제를 해결하기 위해 개발된다. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다. 명세 관점(Specification Perspective) 도메인을 벗어나 개발자의 영역인 소프트웨어에 집중 객체들의 책임에 초점을 맞추며 객체의 인터페이스를 바라보는 관점이다. 구현 관점(Implementation Perspect..

도메인과 유스케이스, 유지보수하기 쉽고 유연한 객체지향 시스템

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 06 객체지도 요약 정리 설계 객체지향은 자주 변경되는 '기능'이 아니라 안정적인 '구조'를 기반으로 시스템을 구조화한다. (구조 중심 설계) 기능 측면 설계는 사용자를 위해 무엇을 할 수 있는지에 초점을 맞춘다. (충분조건) 구조 측면 설계는 서비스의 형태가 어떠해야 하는지에 초점을 맞춘다. (필요조건) 기능과 구조는 조화를 이루어야 한다. 소프트웨어는 요구사항이 항상 변경된다. 이 '변경' 때문에 설계가 필요한 것이다. 예측 불가능한 변경에 유연하게 대처할 수 있는 안정적인 구조를 설계해야한다. 좋은 설계는 나중에라도 변경할 수 있는 여지를 남겨 놓는 설계다. 즉, 설계의 목표..

객체지향의 강력함은 책임을 자율적으로 만드는 것에 달려있다

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 05 책임과 메시지 요약 정리 객체가 행동을 하는 유일한 이유는 다른 객체로부터 요청(메시지)을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 자율적인 책임은 객체가 '어떻게'해야 하는가가 아니라 '무엇'을 해야 하는가를 설명한다. 메서드 - 메시지를 처리하기 위해 내부적으로 선택하는 방법을 메서드라고 한다. 필요한 경우 메시지에는 인자가 함께 전달된다. 다형성 서로 다른 타입에 속하는 객체들이 동일한 메시지를 수신한다. 객체들은 서로 다른 메서드를 이용해 메시지를 처리할 수 있다. 즉, 동일한 메시지를 서로 다른 메서드(처리방법)를 이용해 처리..

테스트 주도 개발은 객체지향 설계도구

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 04 역할, 책임, 협력 요약 정리 협력 중요한 것은 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이다. 협력의 본질은 요청과 응답으로 연결되는 네트워크다. 첵임 책임은 객체의 외부에 제공해 줄 수 있는 정보(아는 것) 개인적인 정보에 관해 아는 것 관련된 객체에 관해 아는 것 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것 외부에 제공해 줄 수 있는 서비스(하는 것)의 목록이다. 객체를 생성하거나 계산을 하는 등의 스스로 하는 것 다른 객체의 행동을 시작시키는 것 다른 객체의 활동을 제어하고 조절하는 것 역할 '왕'과 '여왕'이 객체라면 '판사'는 그들의 역할이다. 같은 ..

추상화는 복잡성을 이해하기 쉬운 수준으로 단순화하는 것

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 03 타입과 추상화 요약 정리 이해하기 쉽고 예측 가능한 수준으로 단순화하는 전략 추상화란 불필요한 부분을 도려내가면서 본질(목적)을 드러나게 하는 과정이다. 공통점은 취하고 차이점을 버리는 일반화를 통해 단순하게 만든다. 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순화하는 것이다. 공통적인 특성으로 묶은 것을 '개념'이라고 한다. 개념은 세 가지 관점으로 이야기 할 수 있다. 심볼 : 개념을 가리키는 명칭(ex. 트럼프카드) -> 명칭 내연 : 개념의 완전한 정의(ex. 트럼프카드의 설명, 공통된 특징) -> ..

Generic views - Methods

*이 글은 DRF 공식문서를 보고 개인적으로 번역한 글입니다. 전문적인 번역이 아니므로 내용이 틀릴 수 있습니다. Generic views - Methods Base methods: get_queryset(self) 이 메서드는 리스트 뷰, 디테일 뷰의 조회를 위해 사용되는 쿼리셋을 반환한다. queryset의 지정된 속성에 따라 반환되는 것이 기본값이다. self.queryset 보다 이 매서드를 사용해야한다. self.queryset 은 결과를 이후 모든 리퀘스트에 캐시되기 때문이다. 유저의 리퀘스트에 따른 쿼리셋 반환처럼 다양한 요청에 응답하기 위해 오버라이드할 수도 있다. For example: def get_queryset(self): user = self.request.user return u..

Generic views - Attributes

*이 글은 DRF 공식문서를 토픽별로 번역한 글입니다. Generic views 장고의 제네릭 뷰... 공통적으로 사용되는 패턴들을 줄이기 위해 개발되었다. 뷰 개발에서 찾을 수 있는 일반적인 관용구와 패턴을 가져오고, 반복하지 않고도 일반적인 뷰를 빠르게 작성할 수 있도록 추상화한다. 클래스 기반 뷰의 가장 큰 이점 하나는 재사용 가능한 기능을 구성할 수 있다는 것이다. 레스트 프레임워크는 공통적으로 사용되는 패턴을 여러 내장 뷰로 제공해준다. 제네릭 뷰는 디비 모델과 밀접한 API를 빠르게 만들 수 있도록 도와한다. 만약 제네릭 뷰가 너의 API에 필요하지 않다면, 너는 일반 APIView클래스를 사용할수도 있다. 또는 믹스인과 기본클래스를 활용하여 재사용할 수 있는 제네릭 뷰를 만들 수 있다. Ex..

Function Based Views

Function Based Views 함수 기반 뷰 Saying [that class-based views] is always the superior solution is a mistake.— Nick Coghlan 클래스 기반 뷰가 항상 우수한 해결책이라고 말하는 것은 실수다. REST framework also allows you to work with regular function based views. 레스트 프레임워크는 너가 일반적인 함수 기반 뷰로도 일할 수 있는 것을 허용한다. It provides a set of simple decorators that wrap your function based views to ensure they receive an instance of Request ..