Libro

C++ Software Design: design pattern ฉบับ C++ สมัยใหม่ เหมาะกับใคร

หนังสือของ Klaus Iglberger ว่าด้วยการออกแบบซอฟต์แวร์และ design pattern ใน C++ สมัยใหม่ บทความนี้สรุปจากข้อมูลแคตตาล็อกและรีวิวสองชิ้นของ ACCU เพื่อช่วยดูว่าเล่มนี้เหมาะกับระดับของคุณหรือไม่

ภาพประกอบบทความ: ปกหนังสือ C++ Software Design โดย Klaus Iglberger

ขอบเขตของบทความ: แนะนำขอบเขตเนื้อหาจากสารบัญตามที่ผู้รีวิวของ ACCU บรรยายไว้ เพราะหน้าสำนักพิมพ์ O'Reilly เปิดไม่ได้และหน้า Google Books แสดงชื่อบทไม่ได้ รวมกับข้อมูลแคตตาล็อก ยังไม่ได้อ่านเนื้อหาในเล่ม

นักพัฒนา C++ ที่เขียนโค้ดได้คล่องแล้วมักเจอคำถามถัดไป คือจะจัดโครงสร้างโค้ดอย่างไรให้แก้และขยายได้โดยไม่พังส่วนอื่น design pattern แบบดั้งเดิมจำนวนมากเขียนในยุคที่เน้น inheritance ขณะที่ C++ สมัยใหม่มีทางเลือกอื่น หนังสือเล่มนี้พยายามตอบคำถามนั้น

หนังสือเล่มนี้ว่าด้วยอะไร

C++ Software Design: Design Principles and Patterns for High-Quality Software เขียนโดย Klaus Iglberger ตีพิมพ์โดย O'Reilly Media ปี 2022 ข้อมูลของ Open Library ผูก ISBN ฉบับพิมพ์ 9781098113162 กับความยาว 435 หน้า ส่วนระเบียนบน Google Books ใช้ ISBN 9781098113117 และระบุ 438 หน้า

เนื้อหาครอบคลุมหัวข้ออะไร

ไม่มีสารบัญที่อ่านได้จากแหล่งของสำนักพิมพ์ ข้อมูลส่วนนี้จึงมาจากรีวิวสองชิ้นบนเว็บไซต์ ACCU ซึ่งเป็นสมาคมนักพัฒนาซอฟต์แวร์ และควรอ่านในฐานะคำบรรยายของผู้รีวิว

  • Aschwin Marsman (รีวิว ACCU พฤษภาคม 2023) บรรยายว่าหนังสือมี 11 บท แต่ละบทแบ่งเป็น guideline ที่แสดงอยู่ในสารบัญ บทต้น ๆ ว่าด้วยธรรมชาติของการออกแบบซอฟต์แวร์ การสร้าง abstraction และจุดประสงค์ของ design pattern ส่วนที่เหลือวิเคราะห์ pattern ราวสิบกว่าตัว เช่น Visitor, Strategy, CRTP, Type Erasure และ Singleton โดยดูจากหลายมุมและยกตัวอย่างจาก Standard Library

  • Paul Floyd (รีวิว ACCU มีนาคม 2023) บรรยายว่าสามบทแรกเป็นพื้นฐานและทฤษฎี ส่วนใหญ่ของเล่มเป็น pattern 11 ตัว ส่วนมากมาจากหนังสือ Gang of Four แต่ปรับให้เข้ากับ C++ สมัยใหม่ และมี pattern นอกกลุ่มนั้น เช่น Type Erasure, CRTP และ External Polymorphism หลาย pattern แสดงทั้งแบบ object-oriented ที่ใช้ reference semantics และแบบ template ที่ใช้ value semantics

ผู้รีวิวมองอย่างไร

  • Marsman ให้ห้าดาว ชื่นชมความลึกเรื่องเป้าหมายการออกแบบ เช่น การออกแบบให้รองรับการเปลี่ยนแปลง การทดสอบ และการขยาย และเตือนว่าไม่เหมาะเป็นหนังสือ C++ เล่มแรก

  • Floyd ให้สามดาว ชอบการวิเคราะห์ trade-off ด้าน dependency ความซับซ้อน และประสิทธิภาพ แต่เห็นว่าบทต้นแห้งและมีตัวย่อมาก และรู้สึกว่าการเขียนแบบสนทนากับผู้อ่านรบกวนการอ่าน

ทั้งสองความเห็นเป็นของผู้รีวิว บทความนี้ยังไม่ได้อ่านเนื้อหาเพื่อยืนยัน

พื้นฐานที่ควรมีก่อนอ่าน

Floyd แนะนำว่าผู้อ่านควรรู้จักหนังสือ Gang of Four และ design pattern โดยทั่วไปมาก่อน และ Marsman เห็นว่าไม่ควรเป็นหนังสือ C++ เล่มแรก ผู้อ่านจึงควรเขียน C++ ได้คล่อง และควรรู้จัก template กับ virtual function ข้อหลังเป็นการอนุมานของบทความจากคำบรรยายเรื่อง value semantics และ object-oriented

เหมาะกับใคร และใครควรเริ่มจากเล่มอื่นก่อน

  • เหมาะ กับนักพัฒนา C++ ที่ไม่ใช่มือใหม่ และอยากเห็นการเปรียบเทียบทางเลือกในการออกแบบพร้อมข้อดีข้อเสีย

  • เหมาะ กับคนที่รู้จัก design pattern แบบดั้งเดิมแล้ว และอยากเห็นวิธีเขียนแบบ value semantics

  • ควรเริ่มจากเล่มอื่นก่อน ถ้ายังเรียนภาษา C++ อยู่

ข้อจำกัดของข้อมูลที่ใช้ในบทความนี้

  • ยังไม่ได้อ่านเนื้อหาในเล่มหรือสารบัญจริง โครงสร้างเนื้อหามาจากรีวิวสองชิ้น

  • หน้าหนังสือบนเว็บไซต์ O'Reilly ตอบกลับว่าไม่อนุญาตให้เข้าถึงตอนค้นคว้า

  • จำนวนหน้าไม่ตรงกันระหว่างแหล่ง Open Library ระบุ 435 หน้า Google Books 438 หน้า และรีวิวชิ้นหนึ่งระบุ 408 หน้า

แหล่งอ้างอิง

  • ปกหนังสือ C++ Software Design

    C++ Software Design

    Klaus Iglberger

    รีวิวของ ACCU ระบุว่าหนังสือแบ่งเป็น guideline ในแต่ละบท และวิเคราะห์ pattern อย่าง Strategy, Visitor, CRTP และ Type Erasure พร้อมข้อดีข้อเสีย

    ดูรายละเอียด

บทความนี้อ่านจบได้ในตัวเอง หนังสือด้านบนคือจุดต่อยอดสำหรับผู้ที่ต้องการศึกษาลึกขึ้น