نام کتاب
Beautiful C++

30 Core Guidelines for Writing Clean, Safe, and Fast Code

J. Guy Davidson, Kate Gregory

Paperback346 Pages
PublisherAddison-Wesley
Edition1
LanguageEnglish
Year2022
ISBN9780137647842
808
A4715
انتخاب نوع چاپ:
جلد سخت
601,000ت
0
جلد نرم
541,000ت
0
طلق پاپکو و فنر
551,000ت
0
مجموع:
0تومان
کیفیت متن:اورجینال انتشارات
قطع:B5
رنگ صفحات:سیاه و سفید
پشتیبانی در روزهای تعطیل!
ارسال به سراسر کشور

#Cpp

توضیحات

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.


Table of Contents

Section 1 Bikeshedding is bad

Chapter 1.1 P.2: Write in ISO Standard C++

Chapter 1.2 F.51: Where there is a choice, prefer default arguments over overloading

Chapter 1.3 C.45: Don't define a default constructor that only initializes data members; use in-class member initializers instead

Chapter 1.4 C.131: Avoid trivial getters and setters

Chapter 1.5 ES.10: Declare one name (only) per declaration

Chapter 1.6 NR.2: Don't insist to have only a single return-statement in a function


Section 2 Don't hurt yourself

Chapter 2.1 P.11: Encapsulate messy constructs, rather than spreading through the code

Chapter 2.2 1.23: Keep the number of function arguments low

Chapter 2.3 1.26: If you want a cross-compiler ABI, use a C-style subset

Chapter 2.4 C.47: Define and initialize member variables in the order of member declaration

Chapter 2.5 CP.3: Minimize explicit sharing of writable data

Chapter 2.6 T.120: Use template metaprogramming only when you really need to


Section 3 Stop using that

Chapter 3.1 1.11: Never transfer ownership by a raw pointer (T*) or reference (T&)

Chapter 3.2 1.3: Avoid singletons

Chapter 3.3 C.90: Rely on constructors and assignment operators, not memset and memcpy

Chapter 3.4 ES.50: Don't cast away const

Chapter 3.5 E.28: Avoid error handling based on global state (e.g. errno)

Chapter 3.6 SF.7: Don't write using namespace at global scope in a header file


Section 4 Use this new thing properly

Chapter 4.1 F.21: To return multiple "out" values, prefer returning a struct or tuple Chapter 4.2 Enum.3: Prefer class enums over "plain" enums

Chapter 4.3 ES.5: Keep scopes small

Chapter 4.4 Con.5: Use constexpr for values that can be computed at compile time

Chapter 4.5 T.1: Use templates to raise the level of abstraction of code

Chapter 4.6 T.10: Specify concepts for all template arguments


Section 5 Write code well by default

Chapter 5.1 P.4: Ideally, a program should be statically type safe

Chapter 5.2 P.10: Prefer immutable data to mutable data

Chapter 5.3 1.30: Encapsulate rule violations

Chapter 5.4 ES.22: Don't declare a variable until you have a value to initialize it with

Chapter 5.5 Per.7: Design to enable optimization

Chapter 5.6 E.6: Use RAII to prevent leaks


Foreword by Bjarne Stroustrup, inventor of C++ and co-editor of the C++ Core Guidelines

I enjoyed reading this book. I enjoyed it especially because it presents the C++ Core Guidelines (CG) very differently from how the CG itself does it. The CG presents its rules relatively tersely in a fixed format. The CG rules are often expressed in language-technical terms with an emphasis on enforcement through static analysis. This book tells stories, many coming from the games industry based on the evolution of code and techniques over decades. It presents the rules 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. There are more extensive discussions of the motivation for rules than the CG themselves can offer.


The CG aims for a degree of completeness. Naturally, a set of rules for writing good code in general cannot be complete, but the necessary degree of completeness implies that the CG are not meant for a systematic read. I recommend the introduction and the philosophy section to get an impression of the aims of the CG and its conceptual framework. However, for a selective tour of the CG guided by taste, perspective, and experience, read the book. For true geeks, it is an easy and entertaining read. For most software developers, it offers something new and useful.


About the Author

J. Guy Davidson, head of engineering practice at Creative Assembly, works on its Total War game franchise, curates its catalogue, and improves programming standards across its engineering team. He serves on the ISO C++ committee, moderates the #include discord server, speaks at C++ events, and offers C++ mentoring support through Prospela and BAME in Games.


Kate Gregory has 40+ years of development experience in multiple languages. She has keynoted on five continents, and volunteers in many C++ activities, especially #include , which is making the industry more welcoming and inclusive. Since 1986 she and her husband have run Gregory Consulting, helping clients worldwide become more effective.

دیدگاه خود را بنویسید
نظرات کاربران (0 دیدگاه)
نظری وجود ندارد.
کتاب های مشابه
++C
831
C++ Windows Programming
955,000 تومان
++C
997
Design Patterns in Modern C++
505,000 تومان
++C
1,103
C++ Reactive Programming
534,000 تومان
++C
975
Building Low Latency Applications with C++
878,000 تومان
++C
947
Application Development with Qt Creator
615,000 تومان
++C
853
C++ Initialization Story
463,000 تومان
++C
959
Optimized C++
586,000 تومان
الگوریتم‌‌ها
189
Data Structures and Algorithms in C++
1,384,000 تومان
الگوریتم‌‌ها
1,031
Modern Data Mining Algorithms in C++ and CUDA C
417,000 تومان
++C
958
Deep Belief Nets in C++ and CUDA C: Volume 1
408,000 تومان
قیمت
منصفانه
ارسال به
سراسر کشور
تضمین
کیفیت
پشتیبانی در
روزهای تعطیل
خرید امن
و آسان
آرشیو بزرگ
کتاب‌های تخصصی
هـر روز با بهتــرین و جــدیــدتـرین
کتاب های روز دنیا با ما همراه باشید
آدرس
پشتیبانی
مدیریت
ساعات پاسخگویی
درباره اسکای بوک
دسترسی های سریع
  • راهنمای خرید
  • راهنمای ارسال
  • سوالات متداول
  • قوانین و مقررات
  • وبلاگ
  • درباره ما
چاپ دیجیتال اسکای بوک. 2024-2022 ©