홈 > 부모님 > 부모님 > 소설,일반 > 컴퓨터,모바일
러스트 클린 코드  이미지

러스트 클린 코드
러스트다운 디자인 패턴과 모범사례
제이펍 | 부모님 | 2025.09.04
  • 정가
  • 28,000원
  • 판매가
  • 25,200원 (10% 할인)
  • S포인트
  • 1,400P (5% 적립)
  • 상세정보
  • 18.8x24.5 | 0.570Kg | 300p
  • ISBN
  • 9791194587323
  • 배송비
  • 2만원 이상 구매시 무료배송 (제주 5만원 이상) ?
    배송비 안내
    전집 구매시
    주문하신 상품의 전집이 있는 경우 무료배송입니다.(전집 구매 또는 전집 + 단품 구매 시)
    단품(단행본, DVD, 음반, 완구) 구매시
    2만원 이상 구매시 무료배송이며, 2만원 미만일 경우 2,000원의 배송비가 부과됩니다.(제주도는 5만원이상 무료배송)
    무료배송으로 표기된 상품
    무료배송으로 표기된 상품일 경우 구매금액과 무관하게 무료 배송입니다.(도서, 산간지역 및 제주도는 제외)
  • 출고일
  • 품절된 상품입니다.
  • ★★★★★
  • 0/5
리뷰 0
리뷰쓰기

구매문의 및 도서상담은 031-944-3966(매장)으로 문의해주세요.
매장전집은 전화 혹은 매장방문만 구입 가능합니다.

  • 도서 소개
  • 출판사 리뷰
  • 작가 소개
  • 목차
  • 회원 리뷰

  도서 소개

러스트 고유의 언어 설계를 최대한 활용할 수 있도록 러스트다운 클린 코드와 디자인 패턴을 소개하며, 명확한 설명과 재사용 가능한 코드 예제를 통해 메타프로그래밍, 라이브러리를 직접 구현하는 방법, 플루언트 인터페이스 작성 등 다양한 주제를 다룬다. 이 과정에서 러스트의 내부 작동 원리를 이해하며, 유지보수가 쉽고 지속적인 발전이 가능한 효율적인 러스트 코드 작성법을 배울 수 있을 것이다.

  출판사 리뷰

러스트 심층 탐구. 러스트의 이론이 아닌 실용적 핵심을 파헤친다
진입 장벽이 높은 러스트의 진정한 힘을 끌어내기 위해서는 단순한 문법 습득을 넘어서 이 언어만의 고유한 설계 패턴과 관용구를 이해하고 활용하는 것이 필수적이다.
실제 프로젝트에서 러스트를 활용하기 시작했다면 이제 완전히 새로운 차원의 탐구가 시작된다. 러스트 애플리케이션에서 표준 디자인 패턴을 어떻게 적용할 수 있을까? IntoIterator는 어디서, 왜 사용해야 할까? 러스트 개발자들이 PhantomData 타입을 사랑하는 이유는 무엇일까? 이 책은 이러한 질문들 외에도 많은 궁금증에 답을 제시해준다.
《러스트 클린 코드》는 러스트 고유의 언어 설계를 최대한 활용할 수 있도록 러스트다운 클린 코드와 디자인 패턴을 소개하며, 명확한 설명과 재사용 가능한 코드 예제를 통해 메타프로그래밍, 라이브러리를 직접 구현하는 방법, 플루언트 인터페이스 작성 등 다양한 주제를 다룬다. 이 과정에서 러스트의 내부 작동 원리를 이해하며, 유지보수가 쉽고 지속적인 발전이 가능한 효율적인 러스트 코드 작성법을 배울 수 있을 것이다.

사용하기 즐거운 API 만들기
빌더 패턴 등의 고전적인 디자인 패턴 적용 방법
함수형 프로그래밍 패턴
러스트 안티패턴

이 책은 《GoF의 디자인 패턴》과 달리 디자인 패턴의 목록이 아니라 특정 패턴과 예제, 구현에 대한 토론과 탐구를 담고 있습니다. 패턴을 목록으로 분류하지 않는 이유는 두 가지입니다. 패턴은 단순한 템플릿이나 상용구가 아니며, 패턴을 복사하여 붙여넣는 것으로는 완전한 코드를 완성하는 데 10%(또는 그 이하) 정도만 도달할 수 있기 때문입니다. 이 책은 지식과 개인적인 성장에 대한 욕구가 있는 독자를 위한 책입니다.

러스트의 고유한 언어 기능으로 인해 API 설계와 고품질 코드를 작성할 때는 좀 더 많은 고민이 필요합니다. 특히 메모리와 객체 수명을 관리하고, 콘텍스트 간에 값을 전달하고, 경합 조건을 피하고, API가 사용자 친화적인지 확인하는 방법에 대해 더 많이 생각해야 합니다. 또한 러스트는 새로운 패턴을 만들거나 발견할 수 있는 새로운 기회로 가득하며, 분명 이 책이 출간된 이후에도 발전해 나갈 것입니다. 화성에 가기 위해서는 화성에 갈 수 있는 로켓을 만들어야 하고, 7개월의 여정 동안 발생할 무수한 문제도 해결해야 합니다.

이 장의 도입부에서 뉴타입은 러스트 전용 패턴이라고 언급했지만, 엄밀히 말하면 다른 프로그래밍 언어에서도 동일한 개념을 적용하는 데 아무런 제한이 없습니다. 러스트 전용이라는 말은 제가 아는 한, 이 패턴이 러스트 커뮤니티 내에서 시작되었다는 의미일 뿐입니다.

  작가 소개

지은이 : 브렌든 매슈스
아파치 소프트웨어 재단의 멤버이자 소프트웨어 엔지니어 겸 기업가이며, 초창기부터 러스트를 사용해온 오픈소스 참여자로서 《러스트 프로페셔널 코드》(제이펍, 2024)의 저자다. 14년 이상 깃허브 기여자로 활동하며, 여러 러스트 크레이트 및 오픈소스 러스트 프로젝트에 참여했고, 제품 수준의 러스트 애플리케이션을 전문적으로 구축했다.

  목차

옮긴이 머리말 x
베타리더 후기 xi
시작하며 xiii
감사의 글 xiv
이 책에 대하여 xv
표지에 대하여 xix

PART I 구성 요소
CHAPTER 1 러스트다운 패턴 3
1.1 이 책에서 다루는 내용 5
1.2 디자인 패턴이란? 6
1.3 이 책이 다른 이유 9
1.4 필요한 도구 10
1.5 정리하며 11

CHAPTER 2 러스트의 기본 구성 요소 13
2.1 제네릭 14
2.1.1 튜링 완전성 타입 시스템 14
2.1.2 왜 제네릭인가? 15
2.1.3 제네릭의 기초 15
2.1.4 러스트의 Option 살펴보기 19
2.1.5 마커 구조체와 팬텀 타입 19
2.1.6 제네릭 매개변수 트레이트 바운드 23
2.2 트레이트 23
2.2.1 트레이트가 객체 지향 프로그래밍이 아닌 이유 24
2.2.2 트레이트에 들어 있는 것들 25
2.2.3 객체 지향 코드를 살펴보며 트레이트 이해하기 26
2.2.4 제네릭과 트레이트 결합하기 30
2.2.5 자동으로 트레이트 도출하기 35
2.2.6 트레이트 객체 37
2.3 정리하며 40

CHAPTER 3 코드 흐름 43
3.1 패턴 매칭 둘러보기 44
3.1.1 패턴 매칭의 기초 44
3.1.2 ? 연산자로 간결하게 처리하기 50
3.2 함수적 러스트 53
3.2.1 러스트 함수형 프로그래밍의 기초 54
3.2.2 클로저 변수 캡처 56
3.2.3 반복자 살펴보기 57
3.2.4 iter(), into_iter(), iter_mut()로 반복자 얻기 62
3.2.5 반복자의 기능 71
3.3 정리하며 76

PART II 핵심 패턴
CHAPTER 4 기본 패턴 79
4.1 리소스의 획득은 초기화 80
4.1.1 C와 C++의 RAII 81
4.1.2 러스트의 RAII 둘러보기 85
4.1.3 러스트의 RAII 요약 87
4.2 인자를 값으로 전달하기와 레퍼런스로 전달하기 89
4.2.1 값으로 전달하기 89
4.2.2 레퍼런스로 전달하기 91
4.2.3 언제 무엇을 할 것인가?: 값으로 전달하기와 레퍼런스로 전달하기 93
4.3 생성자 94
4.4 객체 멤버 가시성과 접근성 97
4.5 오류 처리 99
4.6 전역 상태 102
4.6.1 lazy-static.rs 105 / 4.6.2 once_cell 106
4.6.3 static_init 107 / 4.6.4 std::cell::OnceCell 108
4.7 정리하며 109

CHAPTER 5 디자인 패턴: 기본을 넘어서 111
5.1 매크로를 사용한 메타프로그래밍 112
5.1.1 기본적인 선언적 매크로 113
5.1.2 언제 매크로를 사용해야 할까요? 115
5.1.3 매크로를 사용해 미니 DSL 작성하기 121
5.1.4 DRY에 매크로 사용하기 122
5.2 선택적 함수 인자 126
5.2.1 파이썬에서 선택적 인자 살펴보기 126
5.2.2 C++에서 선택적 인자 살펴보기 127
5.2.3 러스트에는 선택적 인자가 없다 127
5.2.4 트레이트로 선택적 인자 모방하기 128
5.3 빌더 패턴 131
5.3.1 빌더 패턴 구현하기 132
5.3.2 트레이트로 빌더 강화하기 134
5.3.3 매크로로 빌더 발전시키기 135
5.4 플루언트 인터페이스 패턴 139
5.4.1 플루언트 빌더 139
5.4.2 플루언트 빌더 테스트 142
5.5 관찰자 패턴 143
5.5.1 콜백을 쓰지 않는 이유 143
5.5.2 관찰자 구현하기 144
5.6 명령 패턴 147
5.6.1 명령 패턴 정의하기 148
5.6.2 명령 패턴 구현하기 149
5.7 뉴타입 패턴 152
5.8 정리하며 155

CHAPTER 6 라이브러리 디자인하기 157
6.1 좋은 라이브러리 디자인 158
6.2 한 가지만, 올바르게, 잘하기 159
6.3 과도한 추상화 피하기 160
6.4 기본 타입에 충실하기 160
6.5 도구 사용 161
6.6 좋은 예술가는 베끼고, 위대한 예술가는 훔친다(표준 라이브러리에서) 162
6.7 모든 것을 문서화하고 예제를 제공하세요 162
6.8 사용자의 코드를 망치지 마세요 163
6.9 상태를 생각하세요 163
6.10 미학 고려하기 164
6.11 러스트 라이브러리의 편리한 사용성 165
6.11.1 연결 리스트 다시 살펴보기 165
6.11.2 rustdoc을 사용해 API 디자인 개선하기 167
6.11.3 더 많은 테스트를 통해 연결 리스트 개선하기 174
6.11.4 다른 사람이 디버깅하기 쉬운 라이브러리 만들기 176
6.12 정리하며 179

PART III 고급 패턴
CHAPTER 7 특수한 작업에 트레이트, 제네릭, 구조체 사용하기 183
7.1 상수 제네릭 184
7.2 외부 크레이트 타입에 대한 트레이트 구현하기 186
7.2.1 래퍼 구조체 187 / 7.2.2 Deref를 사용하여 래핑된 구조체 언래핑하기 187
7.3 확장 트레이트 189
7.4 블랭킷 트레이트 191
7.5 마커 트레이트 194
7.6 구조체 태깅 196
7.7 레퍼런스 객체 199
7.8 정리하며 205

CHAPTER 8 상태 기계, 코루틴, 매크로, 프렐류드 207
8.1 트레이트 상태 기계 208
8.2 코루틴 212
8.3 절차적 매크로 218
8.4 프렐류드 222
8.5 정리하며 226

PART IV 문제 피하기
CHAPTER 9 불변성 229
9.1 불변성의 장점 230
9.2 불변성이 만능이 아닌 이유 232
9.3 불변 데이터에 대해 생각하는 방법 233
9.4 러스트의 불변성 이해하기 234
9.5 불변성의 기본 개념 살펴보기 236
9.6 트레이트를 사용해 (거의) 모든 것을 불변으로 만들기 239
9.7 불변성을 위해 Cow 사용하기 240
9.8 불변 데이터 구조를 위한 크레이트 244
9.8.1 im 사용하기 244 / 9.8.2 rpds 사용하기 245
9.9 정리하며 247

CHAPTER 10 안티패턴 249
10.1 안티패턴이란? 250
10.2 unsafe 사용하기 251
10.2.1 unsafe는 어떤 기능을 하나요? 253
10.2.2 unsafe는 어디에 사용할 수 있나요? 254
10.2.3 언제 unsafe를 사용해야 하나요? 256
10.2.4 unsafe는 위험한가요? 257
10.3 unwrap() 사용하기 257
10.4 Vec을 사용하지 않는 것 258
10.5 너무 많은 복제 262
10.6 다형성 모방을 위한 Deref 사용 263
10.7 전역 데이터와 싱글톤 268
10.8 너무 많은 스마트 포인터 269
10.9 앞으로 나아갈 방향 270
10.10 정리하며 271

APPENDIX A 러스트 설치하기 273
A.1 이 책에 필요한 도구 설치하기 273
A.1.1 Homebrew를 사용하여 맥OS용 도구 설치하기 273
A.1.2 리눅스 시스템용 도구 설치하기 274
A.1.3 윈도우용 도구 설치하기 274
A.2 rustc와 다른 러스트 구성 요소를 rustup 관리하기 275
A.2.1 rustc 및 기타 구성 요소 설치하기 275
A.2.2 rustup으로 기본 툴체인 전환하기 275
A.2.3 러스트 구성 요소 업데이트하기 275

찾아보기 277

  회원리뷰

리뷰쓰기

    이 분야의 신상품