Beautiful C++ : 30 Core Guidelines for Writing Clean, Safe, and Fast Code

個数:

Beautiful C++ : 30 Core Guidelines for Writing Clean, Safe, and Fast Code

  • 在庫がございません。海外の書籍取次会社を通じて出版社等からお取り寄せいたします。
    通常6~9週間ほどで発送の見込みですが、商品によってはさらに時間がかかることもございます。
    重要ご説明事項
    1. 納期遅延や、ご入手不能となる場合がございます。
    2. 複数冊ご注文の場合、分割発送となる場合がございます。
    3. 美品のご指定は承りかねます。

    ●3Dセキュア導入とクレジットカードによるお支払いについて

  • 提携先の海外書籍取次会社に在庫がございます。通常約2週間で発送いたします。
    重要ご説明事項
    1. 納期遅延や、ご入手不能となる場合が若干ございます。
    2. 複数冊ご注文の場合、分割発送となる場合がございます。
    3. 美品のご指定は承りかねます。

    ●3Dセキュア導入とクレジットカードによるお支払いについて
  • 【入荷遅延について】
    世界情勢の影響により、海外からお取り寄せとなる洋書・洋古書の入荷が、表示している標準的な納期よりも遅延する場合がございます。
    おそれいりますが、あらかじめご了承くださいますようお願い申し上げます。
  • ◆画像の表紙や帯等は実物とは異なる場合があります。
  • ◆ウェブストアでの洋書販売価格は、弊社店舗等での販売価格とは異なります。
    また、洋書販売価格は、ご注文確定時点での日本円価格となります。
    ご注文確定後に、同じ洋書の販売価格が変動しても、それは反映されません。
  • 製本 Paperback:紙装版/ペーパーバック版/ページ数 352 p.
  • 言語 ENG
  • 商品コード 9780137647842
  • DDC分類 005.133

Full Description

Discover the Beauty of Modern C++

" Beautiful C++ presents the C++ Core Guidelines from a developer's point of view with an emphasis on what benefits can be obtained from following the rules and what nightmares can result from ignoring them. For true geeks, it is an easy and entertaining read. For most software developers, it offers something new and useful."
--Bjarne Stroustrup, inventor of C++ and co-editor of the C++ Core Guidelines Writing great C++ code needn't be difficult. The C++ Core Guidelines can help every C++ developer design and write C++ programs that are exceptionally reliable, efficient, and well-performing. But the Guidelines are so jam-packed with excellent advice that it's hard to know where to start. Start here, with Beautiful C++.

Expert C++ programmers Guy Davidson and Kate Gregory identify 30 Core Guidelines you'll find especially valuable and offer detailed practical knowledge for improving your C++ style. For easy reference, this book is structured to align closely with the official C++ Core Guidelines website.

Throughout, Davidson and Gregory offer useful conceptual insights and expert sample code, illuminate proven ways to use both new and longstanding language features more successfully, and show how to write programs that are more robust and performant by default.



Avoid "bikeshedding": stop wasting valuable time on trivia
Don't hurt yourself by writing code that will cause problems later
Know which legacy features to avoid and the modern features to use instead
Use newer features properly, to get their benefits without creating new problems
Default to higher-quality code that's statically type-safe, leak resistant, and easier to evolve
Use the Core Guidelines with any modern C++ version: C++20, C++17, C++14, or C++11

There's something here to improve virtually every program you write, design, or maintain.

For ease of experimentation, all sample code is available on Compiler Explorer at https://godbolt.org/z/cg30-ch0.0.

Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

Contents

List of Selected C++ Core Guidelines xiii
Foreword xv
Preface xvii
Acknowledgments xxi
About the Authors xxiii

Section 1: Bikeshedding is bad 1
Chapter 1.1: P.2: Write in ISO Standard C++ 3
Chapter 1.2: F.51: Where there is a choice, prefer default arguments over overloading 13
Chapter 1.3: C.45: Don't define a default constructor that only initializes data members; use in-class member initializers instead 23
Chapter 1.4: C.131: Avoid trivial getters and setters 31
Chapter 1.5: ES.10: Declare one name (only) per declaration 41
Chapter 1.6: NR.2: Don't insist to have only a single return-statement in a function 49

Section 2: Don't hurt yourself 59
Chapter 2.1: P.11: Encapsulate messy constructs, rather than spreading through the code 61
Chapter 2.2: I.23: Keep the number of function arguments low 71
Chapter 2.3: I.26: If you want a cross-compiler ABI, use a C-style subset 79
Chapter 2.4: C.47: Define and initialize member variables in the order of member declaration 87
Chapter 2.5: CP.3: Minimize explicit sharing of writable data 97
Chapter 2.6: T.120: Use template metaprogramming only when you really need to 107

Section 3: Stop using that 119
Chapter 3.1: I.11: Never transfer ownership by a raw pointer (T*) or reference (T&) 121
Chapter 3.2: I.3: Avoid singletons 129
Chapter 3.3: C.90: Rely on constructors and assignment operators, not memset and memcpy 139
Chapter 3.4: ES.50: Don't cast away const 149
Chapter 3.5: E.28: Avoid error handling based on global state (e.g. errno)159
Chapter 3.6: SF.7: Don't write using namespace at global scope in a header file 169

Section 4: Use this new thing properly 179
Chapter 4.1: F.21: To return multiple "out" values, prefer returning a struct or tuple 181
Chapter 4.2: Enum.3: Prefer class enums over "plain" enums 193
Chapter 4.3: ES.5: Keep scopes small 201
Chapter 4.4: Con.5: Use constexpr for values that can be computed at compile time 213
Chapter 4.5: T.1: Use templates to raise the level of abstraction of code 225
Chapter 4.6: T.10: Specify concepts for all template arguments 235

Section 5: Write code well by default 45
Chapter 5.1: P.4: Ideally, a program should be statically type safe 247
Chapter 5.2: P.10: Prefer immutable data to mutable data 259
Chapter 5.3: I.30: Encapsulate rule violations 267
Chapter 5.4: ES.22: Don't declare a variable until you have a value to initialize it with 275
Chapter 5.5: Per.7: Design to enable optimization 285
Chapter 5.6: E.6: Use RAII to prevent leaks 293

Envoi 305
Afterword 307

Index 309

最近チェックした商品