소프트웨어 디자인에 관심이 있거나 파이썬에 대해 보다 자세히 알고 싶은 모든 개발 실무자에게 적합하다. 각 장의 내용은 점점 복잡해지는 구조이기 때문에 차례로 학습하기에 좋다. 숙련된 개발자에게도 도움이 된다. 데코레이터, 디스크립터와 비동기 프로그래밍 같은 파이썬 고급 주제를 다룬다.
목차
서문
chapter 1 소개, 코드 포매팅과 도구 클린 코드의 의미 클린 코드의 중요성 클린 코드에서 코드 포매팅의 역할 프로젝트 코딩 스타일 가이드 준수 Docstring과 어노테이션 Docstring 어노테이션 어노테이션은 docstring을 대체하는 것일까? 기본 품질 향상을 위한 도구 설정 요약
chapter 2 파이썬스러운(pythonic) 코드 인덱스와 슬라이스 자체 시퀀스 생성 컨텍스트 관리자(context manager) 컨텍스트 관리자 구현 프로퍼티, 속성과 객체 메서드의 다른 타입들 파이썬에서의 밑줄 프로퍼티 이터러블 객체 이터러블 객체 만들기 시퀀스 만들기 컨테이너 객체 객체의 동적인 속성 호출형(callable) 객체 매직 메서드 요약 파이썬에서 유의할 점 변경 가능한(mutable) 파라미터의 기본 값 내장(built-in) 타입 확장 요약 참고 자료
chapter 3 좋은 코드의 일반적인 특징 계약에 의한 디자인 사전조건(precondition) 사후조건(postcondition) 파이썬스러운 계약 계약에 의한 디자인(DbC) - 결론 방어적(defensive) 프로그래밍 에러 핸들링 파이썬에서 어설션 사용하기 관심사의 분리 응집력(cohesion)과 결합력(coupling) 개발 지침 약어 DRY/OAOO YAGNI KIS EAFP/LBYL 컴포지션과 상속 상속이 좋은 선택인 경우 상속 안티패턴 파이썬의 다중상속 함수와 메서드의 인자 파이썬의 함수 인자 동작방식 함수 인자의 개수 소프트웨어 디자인 우수 사례 결론 소프트웨어의 독립성(orthogonality) 코드 구조 요약 참고 자료
chapter 4 SOLID 원칙 단일 책임 원칙 너무 많은 책임을 가진 클래스 책임 분산 개방/폐쇄 원칙 개방/폐쇄 원칙을 따르지 않을 경우 유지보수의 어려움 확장성을 가진 이벤트 시스템으로 리팩토링 이벤트 시스템 확장 OCP 최종 정리 리스코프 치환 원칙(LSP) 도구를 사용해 LSP 문제 검사하기 애매한 LSP 위반 사례 LSP 최종 정리 인터페이스 분리 원칙 너무 많은 일을 하는 인터페이스 인터페이스는 작을수록 좋다. 인터페이스는 얼마나 작아야 할까? 의존성 역전 엄격한 의존의 예 의존성을 거꾸로 요약 참고 자료
chapter 5 데코레이터를 사용한 코드 개선 파이썬의 데코레이터 함수 데코레이터 클래스 데코레이터 다른 유형의 데코레이터 데코레이터에 인자 전달 데코레이터 활용 우수 사례 데코레이터의 활용 - 흔한 실수 피하기 래핑된 원본 객체의 데이터 보존 데코레이터 부작용 처리 어느 곳에서나 동작하는 데코레이터 만들기 데코레이터와 DRY 원칙 데코레이터와 관심사의 분리 좋은 데코레이터 분석 요약 참고 자료
chapter 6 디스크립터로 더 멋진 객체 만들기 디스크립터 개요 디스크립터 메커니즘 디스크립터 프로토콜의 메서드 탐색 디스크립터의 유형 비데이터(non-data) 디스크립터 데이터 디스크립터 디스크립터 실전 디스크립터를 사용한 애플리케이션 다른 형태의 디스크립터 디스크립터에 대한 추가 고려사항 디스크립터 분석 파이썬 내부에서의 디스크립터 활용 데코레이터를 디스크립터로 구현하기 요약 참고 자료
chapter 7 제너레이터 사용하기 기술적 요구사항 제너레이터 만들기 제너레이터 개요 제너레이터 표현식 이상적인 반복 관용적인 반복 코드 파이썬의 이터레이터 패턴 코루틴(coroutine) 제너레이터 인터페이스의 메서드 코루틴 고급 주제 작은 코루틴에 위임하기 - yield from 구문 비동기 프로그래밍 요약 참고 자료
chapter 8 단위 테스트와 리팩토링 디자인 원칙과 단위 테스트 자동화된 테스트의 다른 형태 단위 테스트와 애자일 소프트웨어 개발 단위 테스트와 소프트웨어 디자인 테스트의 경계 정하기 테스트를 위한 프레임워크와 도구 단위 테스트 프레임워크와 라이브러리 코드 커버리지 모의(mock) 객체 리팩토링 코드의 진화 상용 코드만 진화하는 것이 아니다. 단위 테스트에 대한 추가 논의 속성 기반 테스트 변형 테스트 테스트 주도 개발 간략 소개 요약 참고
chapter 9 일반적인 디자인 패턴 파이썬에 디자인 패턴 적용 시 고려사항 실전 속의 디자인 패턴 생성(creational) 패턴 구조(structural) 패턴 행동(behavioral) 패턴 Null 객체 패턴 디자인 패턴에 대한 최종 정리 디자인에 대한 패턴의 영향성 모델의 이름 요약 참고
chapter 10 클린 아키텍처 클린 코드에서 클린 아키텍처로 관심사의 분리 추상화 소프트웨어 컴포넌트 패키지 컨테이너 유스케이스 코드 서비스 분석 요약 참고 최종 요약
찾아보기
서가브라우징
파이썬과 OpenCV를 이용한 컴퓨터 비전 학습 : 컴퓨터 비전 애플리케이션을 만들기 위한 강력한 OpenCV 3와 파이썬 활용하기 2019 / 지음:알렉세이 스피쉐보이, 알렉산드르 류브니코프 ; 옮김:테크 트랜스 그룹 T4 / 에이콘
개념있는 JAVA2019 / 시바타 보요 지음 ; 김성훈 옮김 / 영진닷컴
파이썬의 정석 2021 / 지음: 시바타 보요 ; 옮김: 최하영 / 루비페이퍼
머신 러닝 부트캠프 with 파이썬2018 / 시스템 계획 연구소 지음 ; 김은철, 유세라 옮김 / 길벗
이것이 자바다: 교육 현장에서 가장 많이 쓰이는 JAVA 프로그래밍의 기본서2022 / 지음: 신용권, 임경균 / 한빛미디어
(맛있게 읽는) 말랑말랑 파이썬 유쾌한 맛 2022 / 지음: 신유선 / 북스힐
(나도 모르게 파이썬에 홀딱 빠지는) 쓸모 있는 파이썬 프로그램 40개 2023 / 지음: 심교훈 / 로드북
파이썬 클린 코드 : 유지보수가 쉬운 파이썬 코드를 만드는 비결2018 / 마리아노 아나야 지음 ; 김창수 옮김 / 터닝포인트
Go 풀스택 웹 개발 : Go와 리액트, Gin, GopherJS를 사용한 풀스택 웹 프로그래밍 2020 / 지은이: 미나 안드라오스; 옮긴이: 이우현 / 에이콘