เราไม่ได้ต่อสู้กับคนโหดร้าย แต่เราต่อสู้กับความโหดร้ายในตัวคน
เทคนิคในการศึกษา Design Pattern
User Rating: / 0
PoorBest 

Design Pattern

เทคนิคในการศึกษา Design Pattern ในการออกแบบซอฟท์แวร์ สิ่งที่ช่วยให้เราออกแบบซอฟท์แวร์ได้ง่าย เร็ว ดี คือ การรู้ที่จะนำ Pattern ที่มีการคิดวิธีแก้ปัญหาต่างๆ ที่มักพบในการพัฒนาซอฟท์แวร์มาช่วยเป็นแนวทางในการออกแบบซอฟท์แวร์แบบไม่ต้องคิดเองทั้งหมดให้เสียเวลา เพียงรู้จักเลือก Pattern ที่เหมาะสมมาใช้ก็เพียงพอแล้ว


 

0. อย่าจำ

  • แนะนำให้ใช้สมองซีกขวา คิดในเชิงกลยุทธ์
  • GoF ที่เขียนตั้งแต่ 1994 มีประโยชน์ แต่เก่าไปแล้ว
  • หัวใจของ Architecture คือต้องมองแก่นให้ออก ว่าอะไรเป็นแก่น อะไรเป็นเปลือก
  • ต้องเลือกใช้ Pattern ให้เหมาะสมกับสถานการณ์ แม้ว่าเป็นปัญหาเดียวกัน แต่ในเวลาที่ต่างไปอาจจะใช้วิธีการแก้ปัญหาที่ต่างกัน
  • ศิลปะ -> การคิดนอกกรอบ (Lateral Thinking) + การคิดเชิงกลยุทธ์ (Strategic Thinking)
  • การเลือกใช้ Pattern ได้อย่างเหมาะสม ลงตัวกับสกถานการณ์ (คนเก่ง Pattern ต้องวิเคราะห์สถานการณ์เป็น)
  • แนะนำให้หาหนังสือเกี่ยวกับการฝึกความคิดมาเพิ่มเติม
  • ศิลปะ ผ่านมุมมอง ทัศนคติ รสนิยม

 

1. Problem + Domain Knowledge

  • ต้องเป็นนักวิเคราะห์ปัญหาที่ดีก่อน
  • Context = บริบท ต้องดูให้ออกว่าอะไรเป็นตัวหลอก อะไรเป็นตัวจริง
  • บริบท ประกอบด้วยอะไรก็ได้ที่เกี่ยวข้องกับปัญหา เช่น โครงสร้างองค์กร นโยบายองค์กร รวมถึงภายนอกองค์กร
  • ต้องเข้าใจว่าองค์ความรู้หลักของปัญหาคือเรื่องอะไร รู้ว่าอะไรเป็นองค์ความรู้รอง
  • ต้องยอมรับว่าไม่มีใครเก่งไปทุกด้าน ถ้าเราชำนาญหรือาเข้าใจในเรื่องใดเป็นพิเศษ เราจะแก้ปัญหาในเรื่องนั้นได้เร็ว ต้องยอมรับในจุดอ่อนของเราให้ได้ เรื่องที่เราไม่รู้ให้หา Domain Expert มาช่วย หรือไปศึกษาเรียนรู้เพิ่มเติม

2. Context

  • ตัวอย่าง เช่น เรามีโจทย์ยาวๆ 4-5 บรรทัด ต้องเข้าใจว่าเค้าถามอะไร อะไรเป็นองค์ความรู้หลัก อะไรเป็นองค์ความรู้ข้างเคียง (เปรียบเทียบ ดวงอาทิตย์เป็นองค์ความรู้หลัก ที่มีดาวเป็นองค์ความรู้รอง) เมื่อรู้โจทย์แล้ว จึงนำมาเลือกใช้วิธีในการแก้ปัญหา

 

3. Pattern Name

  • ความจำปรกติเก็บไว้ที่สมอง อีกที่หนึ่งคือจิตใต้สำนึก ซึ่งจะถ่ายโอนจากสมองไปที่จิตใต้สำนัก (กระบวนการหยั่งรู้เพื่อให้เกิดปัญญา) โดยการใช้อยู่อย่างสม่ำเสมอ จนมีความชำนาญ (ต้องนึกชื่อ Pattern ให้ออก จากนั้นเปิดหนังสือดูเพื่อนำมาใช้ต่อ)

 

4. Related Pattern

  • มักใช้ร่วมกับ Pattern อะไร
  • ประยุกต์มาจาก Pattern อะไร ดูว่ามาจาก Pattern อะไร เพิ่มเติมอะไร ต่างจากเดิมตรงไหน

 

5. สร้าง Pattern เอง

  • Pattern แต่ละตัวมีข้อจำกัดของมันอยู่ ซึ่งอาจจะไม่ตรงกับความต้องการของเรา
  • สิ่งที่อยู่ใน Framework ประกอบด้วย Pattern ต่างๆ มารวมกัน
  • Output ของ Pattern (Pattern มักเรียกว่า Solution กึ่งสำเร็จรูป) คือการออกแบบกลไก (Architectural Mechanism) เช่น กลไก Connector Data, Trace Control, Database Connection Pooling Management,...
  • Framework ใช้ในการแก้ปัญหาระดับใหญ่ (Domain problem) ประกอบด้วย Solution ต่างๆ มารวมกัน
  • Framework มีความหมายใกล้เคียงพิมพ์เขียว (Reference Architecture) ไม่ได้เอาไว้ใช้ เอาไว้ให้อ้างอิง, Framework ต้องปรับก่อนใช้
  • ปัญหาที่พบในบ้านเรา เราควรเน้น What ก่อน How ถ้าเราเน้น How-To โดยไม่รู้ทฤษฎี จะทำให้เราตัน
 

Advertisement