이미 소장하고 있다면 판매해 보세요.
1장. 견고한 파이썬
__견고성 ____견고성이 중요한 이유 __여러분의 의도는 무엇인가? ____비동기 소통 __파이썬 코드에서 의도의 예시 ____컬렉션 ____반복 구문 ____최소 놀람의 원칙 __마치며 2장. 파이썬 타입의 소개 __타입이란? ____기계적인 표현 ____의미적 표현 __타입 시스템 ____강한 스펙트럼과 약한 스펙트럼 ____동적 타입과 정적 타입 ____덕 타이핑 __마치며 3장. 타입 어노테이션 __타입 어노테이션이란? __타입 어노테이션의 장점 ____자동 완성 ____타입 체커 ____연습: 버그 찾기 __타입 어노테이션은 사용할 때 __마치며 4장. 타입의 제어 __Optional 타입 __Union 타입 ____곱 타입과 합 타입 __Literal 타입 __Annotated 타입 __NewType __Final 타입 __마치며 5장. 컬렉션 타입 __컬렉션의 어노테이션 __동종 컬렉션과 이종 컬렉션 __TypedDict __새로운 컬렉션 생성 ____제네릭 ____기존 타입의 변경 ____ABC처럼 쉽게 __마치며 6장. 타입 체커의 커스터마이징 __타입 체커의 설정 ____mypy의 설정 ____mypy 리포트 ____mypy를 빠르게 __기타 타입 체커 ____Pyre ____Pyright __마치며 7장. 실용적 타입 체킹 __트레이드오프 __더 빠른 손익 분기 ____취약점 찾기 ____전략적으로 대상 코드를 잡아라 ____도구화에 의존하기 __마치며 8장. 사용자 정의 타입: 열거형 __사용자 정의 타입 __열거형 ____Enum ____사용하지 않을 때 __고급 사용법 ____자동 변수 ____플래그 ____정수형 변환 ____고유성 __마치며 9장. 사용자 정의 타입: 데이터 클래스 __데이터 클래스의 동작 __사용법 ____문자열 변환 ____등가 비교 ____관계 비교 ____불변성 __다른 타입과의 비교 ____데이터 클래스와 딕셔너리 ____데이터 클래스와 TypedDict ____데이터 클래스와 namedtuple __마치며 10장. 사용자 정의 타입: 클래스 __클래스 해부 ____생성자 __불변 속성 ____깨진 불변 속성 피하기 ____불변 속성이 이익인 이유 ____불변 속성을 통한 커뮤니케이션 ____클래스의 소비 ____유지 보수자들은 어떻게? __캡슐화와 불변 속성의 유지 보수 ____캡슐화 ____데이터 접근의 보호 ____운영 __마치며 11장. 사용자 정의 인터페이스 __자연스러운 인터페이스 설계 ____사용자처럼 생각하기 __자연스런 상호작용 ____자연스런 상호작용의 실제 ____매직 메서드 ____컨텍스트 매니저 __마치며 12장. 하위 타입 __상속 __치환 가능성 __설계 고려 사항 ____합성 __마치며 13장. 프로토콜 __타입 시스템 간의 관계 ____타입을 비워두거나 Any로 사용 ____Union의 사용 ____상속의 사용 ____믹스인의 사용 __프로토콜 ____프로토콜의 정의 __고급 사용법 ____프로토콜의 합성 ____런타임 시 체크할 수 있는 프로토콜 ____프로토콜을 만족시키는 모듈 __마치며 14장. pydantic으로 런타임 체크 __동적 설정 __pydantic ____유효성 검사 도구 ____유효성 검사와 파싱 __마치며 15장. 확장성 __확장성이란? ____재설계 __개방-폐쇄의 원칙 ____개방-폐쇄 원칙의 위배 ____개방-폐쇄 원칙의 단점 __마치며 16장. 의존성 __관계 __의존성의 유형 ____물리적 의존성 ____논리적 의존성 ____일시적(시간적) 의존성 __의존성의 시각화 ____시각화 패키지 ____임포트의 시각화 ____함수 호출의 시각화 ____의존성 그래프의 해석 __마치며 17장. 조합 가능성 __조합 가능성 __정책과 메커니즘 __더 작은 스케일로 구성 ____함수의 조합 ____데코레이터 __알고리듬의 조합 __마치며 18장. 이벤트 주도 아키텍처 __동작 방식 ____단점 __단일 이벤트 ____메시지 중개자가 있는 경우 ____관찰자 패턴 __이벤트 스트리밍 __마치며 19장. 플러그인 __템플릿 메서드 패턴 __전략 패턴 __플러그인 아키텍처 __마치며 20장. 정적 분석 __린팅 ____사용자 정의 Pylint 플러그인 작성 ____플러그인의 분해 __기타 정적 분석 도구 ____복잡도 분석 도구 ____보안 분석 __마치며 21장. 테스트 전략 __테스트 전략의 정의 ____테스트란? __테스트 비용 줄이기 ____AAA 테스트 __마치며 22장. 인수 테스트 __행위 주도 개발(BDD) ____걸킨 언어 ____실행 가능 사양 __추가적인 behave의 기능 ____단계의 파라미터화 ____테이블 주도 요구 사항 ____단계 매칭 ____테스트 수명주기의 사용자화 ____테스트의 선별적 수행을 위한 태그 사용 ____리포트 생성 __마치며 23장. 속성 기반 테스트 __Hypothesis와 속성 기반 테스트 ____Hypothesis의 마법 ____기존 테스트와의 비교 __Hypothesis의 최대한 활용 ____Hypothesis 전략 ____알고리듬 생성 __마치며 24장. 뮤테이션 테스트 __뮤테이션 테스트가란? __mutmut을 이용한 뮤테이션 테스트 ____뮤턴트의 수정 ____뮤테이션 테스트 리포트 __뮤테이션 테스트의 적용 ____커버리지의 오류(그리고 다른 메트릭) __마치며 |
저패트릭 비아포어
관심작가 알림신청Patrick Viafore
역김성준
관심작가 알림신청김성준의 다른 상품
◈ 이 책에서 다루는 내용 ◈
◆ 개발 생태계에서의 타입의 중요성 ◆ 특정 의도 반영을 위한 타입 선택 ◆ 확장성 있는 파이썬 만들기 ◆ 코드베이스의 견고성 및 안전성 높이기 ◆ 유지보수 문제 감지를 위한 코드 평가 ◆ 린팅과 테스팅을 통한 코드베이스 안전망 구축 ◈ 이 책의 대상 독자 ◈ 지속 가능하며 유지 가능한 방식으로 본인의 코드를 발전시키고 싶은 모든 파이썬 개발자를 위한 책이다. 파이썬 프로그래밍 경험이 있어야 하며 파이썬 입문용으로는 적합하지 않다. 파이썬의 제어 흐름과 클래스를 이해하고 있어야 한다. ◈ 이 책의 구성 ◈ 이 책은 크게 4부로 구성돼 있다. 제1부, 코드에 타입 어노테이션하기 먼저 파이썬의 타입 어노테이션(type annotation)을 설명한다. 타입은 모든 언어의 기초이지만 세부적으로 다뤄지지 않는 경향이 있다. 한 번 정해진 타입은 매우 구체적인 의도를 전달하기 때문에 중요하다. 타입 어노테이션과 특정 어노테이션(specific annotation)이 개발자에게 어떤 내용을 전달하는지 살펴본다. 또한 타입체커(typechecker)를 살펴보고 이것이 오류를 잡는 데 어떻게 도움이 되는지 알아본다. 제2부, 여러분만의 타입을 정하기 파이썬의 타입을 알아본 후 타입을 어떻게 생성하는지 살펴볼 것이다. 열거형(enumeration), 데이터 클래스 및 클래스를 자세히 다룬다. 그리고 타입 설계 방식 선택이 코드의 견고성에 미치는 영향도 알아본다. 제3부, 확장 가능한 파이썬 의도를 전달하는 법을 배운 뒤, 향후 개발자들이 강력한 기반을 바탕으로 코드를 효과적으로 변경하며 자신 있게 빌드하는 방법을 살펴본다. 제4부, 안전망의 설치 마지막으로 우리는 이후에 인수할 개발자들이 떨어져도 다치지 않을 안전망을 설치하는 방법을 알아본다. 본인의 사례에도 어려움 없이 적용할 수 있는 튼튼한 장치가 있다는 것을 알게 되면 개발자들도 자신감이 올라갈 것이다. 마지막으로 오류 발견에 도움이 되는 다양한 정적 분석 및 테스트 도구를 알아본다. ◈ 지은이의 말 ◈ 소프트웨어 엔지니어인 마크 앤드리슨(Marc Andreesen)은 "소프트웨어가 세상을 집어삼키고 있다(Software is eating the world)"라고 선언했다. 이는 2011년도에 선언됐으나 지금도 유효하다. 소프트웨어 시스템은 점점 복잡해져서 우리의 생활에 필수적으로 자리 잡았는데, 세상을 집어삼키는 이 짐승의 한가운데에 서 있는 언어가 바로 파이썬이다. 파이썬은 프로그래머들에게 인기 있는 언어로 자주 언급되며 웹 애플리케이션에서 머신러닝, 개발 도구에 이르기까지 곳곳에서 사용된다. 하지만 반짝인다고 해서 모두 금은 아니다. 소프트웨어 시스템이 복잡해질수록 우리가 생각한 모델이 실제로 어떻게 매핑이 되는지 이해하기는 더 어려워진다. 이를 방치하면 소프트웨어 시스템은 비대해지고 취약해져서 "레거시 코드(legacy code)"라는 무서운 이름을 얻게 된다. 이런 코드 베이스들은 "더 이상 수정을 하지 마시오(Do not touch this files)! 이유는 알 것 없음. 그냥 건드리는 순간 무너짐"과 "이 코드는 그렇고 그런 사람들만이 알고 있으며, 이들은 실리콘 밸리로 이직해버렸음."이라는 경고 주석을 달게 된다. 사실, 오래 지속되는 시스템을 만들기 위해서는 신중한 선택을 해야 한다. 타이터스 윈터스(Titus Winters), 톰 맨쉬렉(Tom Manshreck), 하이럼 라이트(Hyrum Wright)가 언급한 바와 같이 "소프트웨어 공학은 시간이 지나도 일관된 프로그래밍"이다. 여러분의 코드가 오래 유지될 수도 있다. 실제로 나는 내가 초등학교 때 짠 코드로 이뤄진 프로젝트에 발을 들여놓기도 했다. 여러분들의 코드는 얼마나 유지될까? 현 업무의 정년보다, 또는 프로젝트의 유지보수가 끝날 때보다 더 오래 지속될 수 있을까? 누군가가 여러분의 코드로부터 핵심 컴포넌트를 만든다고 가정할 때 몇 년 후에 그 코드가 어떻게 비추어지면 좋겠는가? 당신의 코드를 보고 후계자들이 당신의 혜안에 감탄하기를 원하는가? 아니면 코드의 복잡함을 저주하기를 원하는가? 파이썬은 놀라운 언어이지만 제대로 설계를 하는 것은 쉽지 않다. 일부 다른 프로그래밍 언어 지지자들은 파이썬을 "프로덕션 수준이 아닌" 또는 "프로토타이핑 전용" 언어로 여긴다. 하지만 많은 개발자가 견고한 파이썬 코드 작성의 기술과 도구를 배우는 대신 겉핥기만 하고 있는 게 현실이다. 이 책을 통해 견고한 파이썬 코드의 작성을 배우며 유지보수가 용이한 클린 코드를 작성할 수 있는 다양한 여정을 거칠 것이다. 여러분의 코드를 유지보수할 미래의 담당자들은 쉽게 작업할 수 있도록 구성된 설계로 인해 유지보수 작업에 큰 어려움을 느끼지 못할 것이다. 이제 이 책을 읽고 미래를 내다보면서 오랫동안 유지될 멋진 소프트웨어를 만들어보자. ◈ 옮긴이의 말 ◈ 최근 언어들의 트렌드는 타입의 강화 및 체크이다. 자바스크립트의 타입 강화 버전인 타입스크립트의 인기가 높아지고 있는 것이 그 증거다. 타입을 강화하면 코드를 통한 커뮤니케이션이 가능하다. 코드의 의도를 명확하게 파악할 수 있다면 추후 코드 작업 시 들어가는 비용과 노력은 훨씬 줄어들 것이며 이는 유지 보수성의 시발점이다. 파이썬은 3.8 버전 이후로 여러 타입을 지원하기 시작하고 파이썬 커뮤니티에서도 이를 체크할 수 있는 도구들을 제공했지만, 파이썬을 주력으로 쓰는 개발자들 사이에서는 아직 잘 알려지지 않았다. 이 책은 파이썬 코드의 유지보수성 향상을 목표로 한다. 또한 각종 타입 및 클래스의 의미와 사용법, 그리고 이를 체크해주는 도구들을 비롯해 코드 안전망이라고 불리는 각종 테스트까지 총망라해 다룬다. 또한 파이썬 중급 레벨에 필요한 테크닉과 정보를 알려준다. 이 책을 통해 코드를 사용한 커뮤니케이션의 진정한 의미를 알고, 여러분이 만드는 모든 코드의 견고성을 확보하기를 바란다. |