단단한 파이썬 (더 깔끔하고 관리가 쉬운 파이썬 코드를 위해)

단단한 파이썬 (더 깔끔하고 관리가 쉬운 파이썬 코드를 위해)

$36.97
Description
파이썬은 접근하기 쉽고 사용하기도 쉬운 장점이 있지만 자칫 하면 코드의 양이 방대해지기도 쉽다. 그리고 그에 따른 문제가 발생할 가능성이 높은데 이 책에서는 이를 방지하고 해결할 수 있는 방법을 알려준다. 타입을 정의하는 것을 시작으로 데이터 클래스, 클래스 등 파이썬이 제공하는 다양한 타입을 알아보고 이들의 사용법을 정리한다. 그리고 이 타입을 체킹하기 위한 다양한 도구를 소개한다.
확장성을 확보하기 위해 조합, 이벤트 주도 아키텍처, 플러그인도 알아보며, 소프트웨어의 안전망을 확보하기 위해 정적 분석, 테스트 전략, 인수 테스트, 속성 기반 테스트, 뮤테이션 테스트 등을 살펴본다.
저자

패트릭비아포어

PatrickViafore
14년이상을소프트웨어업계에서일했으며,낙뢰감지,통신그리고운영체제를포함한미션크리티컬(MissonCritical)한소프트웨어를주로제작하고유지보수해왔다.C++같은정적타입언어로작업해왔던경험이파이썬과같은동적타입언어를다룰때많은영향을끼쳤으며이런영향이동적타입언어를더견고하고안전하게만든다고믿고있다.또한밋업HSY.py의오거나이저로서파이썬에서의장애물을식별하고이를넘어서려는초보자와전문가들을돕고있다.개발자커뮤니티가컴퓨터과학또는소프트웨어공학이라는주제에더쉽게접근하도록만들어주는것이목표다.
현재캐노니컬(Canonical)에재직중이며,우분투이미지를공용클라우드제공자에배포하는파이프라인도구를제작하고있다.또한그의비즈니스사이트인Kudzera,LLC(https://kudzera.com)를통해소프트웨어개발컨설팅도진행하고있다.

목차

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을이용한뮤테이션테스트
____뮤턴트의수정
____뮤테이션테스트리포트
__뮤테이션테스트의적용
____커버리지의오류(그리고다른메트릭)
__마치며

출판사 서평

◈이책에서다루는내용◈

◆개발생태계에서의타입의중요성
◆특정의도반영을위한타입선택
◆확장성있는파이썬만들기
◆코드베이스의견고성및안전성높이기
◆유지보수문제감지를위한코드평가
◆린팅과테스팅을통한코드베이스안전망구축

◈이책의대상독자◈

지속가능하며유지가능한방식으로본인의코드를발전시키고싶은모든파이썬개발자를위한책이다.파이썬프로그래밍경험이있어야하며파이썬입문용으로는적합하지않다.파이썬의제어흐름과클래스를이해하고있어야한다.

◈이책의구성◈

이책은크게4부로구성돼있다.
제1부,코드에타입어노테이션하기
먼저파이썬의타입어노테이션(typeannotation)을설명한다.타입은모든언어의기초이지만세부적으로다뤄지지않는경향이있다.한번정해진타입은매우구체적인의도를전달하기때문에중요하다.타입어노테이션과특정어노테이션(specificannotation)이개발자에게어떤내용을전달하는지살펴본다.또한타입체커(typechecker)를살펴보고이것이오류를잡는데어떻게도움이되는지알아본다.

제2부,여러분만의타입을정하기
파이썬의타입을알아본후타입을어떻게생성하는지살펴볼것이다.열거형(enumeration),데이터클래스및클래스를자세히다룬다.그리고타입설계방식선택이코드의견고성에미치는영향도알아본다.

제3부,확장가능한파이썬
의도를전달하는법을배운뒤,향후개발자들이강력한기반을바탕으로코드를효과적으로변경하며자신있게빌드하는방법을살펴본다.

제4부,안전망의설치
마지막으로우리는이후에인수할개발자들이떨어져도다치지않을안전망을설치하는방법을알아본다.본인의사례에도어려움없이적용할수있는튼튼한장치가있다는것을알게되면개발자들도자신감이올라갈것이다.마지막으로오류발견에도움이되는다양한정적분석및테스트도구를알아본다.

◈옮긴이의말◈

최근언어들의트렌드는타입의강화및체크이다.자바스크립트의타입강화버전인타입스크립트의인기가높아지고있는것이그증거다.
타입을강화하면코드를통한커뮤니케이션이가능하다.코드의의도를명확하게파악할수있다면추후코드작업시들어가는비용과노력은훨씬줄어들것이며이는유지보수성의시발점이다.
파이썬은3.8버전이후로여러타입을지원하기시작하고파이썬커뮤니티에서도이를체크할수있는도구들을제공했지만,파이썬을주력으로쓰는개발자들사이에서는아직잘알려지지않았다.이책은파이썬코드의유지보수성향상을목표로한다.또한각종타입및클래스의의미와사용법,그리고이를체크해주는도구들을비롯해코드안전망이라고불리는각종테스트까지총망라해다룬다.또한파이썬중급레벨에필요한테크닉과정보를알려준다.
이책을통해코드를사용한커뮤니케이션의진정한의미를알고,여러분이만드는모든코드의견고성을확보하기를바란다.