จากที่ไปเรียนมาพบว่าในเอกสาร
มีอ้างอิงถึงหนังสือชื่อว่า A Philosophy of Software Design
จึงลองตามไปดูว่าในหนังสือมีอะไรบ้าง
ก็พบว่าเป็นหนังสือที่น่าสนใจ
เขียนโดยคุณ John Ousterhout เป็นอาจารย์สอนเรื่องของ Software Design
โดยหนังสือเล่มนี้เป็นการสรุปแนวคิดต่าง ๆ ของการออกแบบ software
นำข้อผิดพลาดที่เกิดขึ้นจากการวิจัยและสอน รวมทั้งงานจริง ๆ
หัวใจหลักของการออกแบบ software คือ
การแยกส่วนการทำงานต่าง ๆ ที่มันมีความซับซ้อนออกจากกัน (decomposition)
ออกมาเป็น module เช่น class และ method ซึ่งทำงานเป็นอิสระต่อกัน
เนื้อหาในหนังสือประกอบไปด้วย
- Introduction
- The nature of complexity
- Working code isn't enough
- Modules should be deep
- Information hiding (and Leakage)
- General-purpose modules are deeper
- Different layers, different abstractions
- Pull complexity downwards
- Better together or better apart? 10 Define errors out of existence
- Design it twice
- Why write comments? The four excuses
- Comments should describe things that aren't obvious from the code
- Choosing names
- Write comments first
- Modifying existing code
- Consistency
- Code should be obvious
- Software trends
- Designing for performance
จาก course Practical Go ที่ไปเรียนมา
จะพูดถึงเรื่องที่ 9 คือ Better together or better apart? 10 Define errors out of existence
มีกลุ่มใน Google Group สำหรับพูดคุยหนังสือเล่มนี้กับผู้เขียนด้วย
สามารถดู VDO เรื่องนี้ได้อีก
ถ้าสังเกตให้ดีจะเป็นหนังสือที่มีเนื้อหาคล้าย ๆ กับหนังสือพวก
- Clean code
- Code simplicity
- The Pragmatic Programmers
เป็นหนังสือในกลุ่มสำหรับนักพัฒนาที่เพิ่มเริ่มต้นจนถึงระดับกลาง
ส่วนใครที่เป็นคนมีประสบการณ์สามารถนำมาศึกษาเพื่อ reflect ตัวเองได้ดีอีกเล่ม
ว่าแล้วไปหาหนังสือเล่มจริงมาอ่านกันดีกว่า