Generic หรือ Template ช่วยเขียนโค้ดที่รองรับข้อมูลหลายชนิดโดยไม่ต้องเขียนซ้ำ เหมาะกับฟังก์ชันหรือโครงสร้างข้อมูลที่มีพฤติกรรมเหมือนกันแต่ชนิดข้อมูลต่างกัน
Collection คือโครงสร้างข้อมูลมาตรฐาน เช่น List, Stack, Queue, Set และ Map การเลือกใช้ควรพิจารณาวิธีเพิ่ม ลบ ค้นหา และเรียงข้อมูล
Lambda คือฟังก์ชันนิรนามที่ใช้ส่งพฤติกรรมเป็นค่า เช่น callback, filter, map หรือ sort ทำให้โค้ดกระชับและยืดหยุ่นขึ้น
Design Pattern เป็นแนวทางแก้ปัญหาการออกแบบที่ใช้ซ้ำได้ เช่น MVC, Singleton และ Factory ซึ่งช่วยให้โครงสร้างโปรแกรมชัดเจนขึ้น
ปรับ Mini Project ให้ใช้ Collection, Lambda หรือ Pattern ที่เหมาะสมอย่างน้อย 1 จุด
ผู้เรียนเรียนรู้การยกระดับโครงสร้างโปรแกรมให้ยืดหยุ่นและนำกลับมาใช้ซ้ำได้ Generic/Template ช่วยลดการเขียนโค้ดซ้ำเมื่อ logic เหมือนกันแต่ชนิดข้อมูลต่างกัน Collection ช่วยเลือกโครงสร้างข้อมูลให้ตรงกับลักษณะการใช้งาน เช่น ต้องค้นหาเร็ว ต้องรักษาลำดับ หรือไม่ต้องการค่าซ้ำ
Lambda ช่วยส่งพฤติกรรมเป็นค่า เช่น การกรอง การเรียง หรือ callback ส่วน Design Pattern ช่วยให้มีภาษากลางในการออกแบบ เช่น MVC แยกหน้าที่ของข้อมูล การประมวลผล และการแสดงผล Factory ช่วยสร้าง Object โดยซ่อนรายละเอียด และ Singleton ใช้กับทรัพยากรที่ควรมีชุดเดียวอย่างระมัดระวัง
ปรับโค้ดเดิมให้ใช้ Collection ที่เหมาะสม และอธิบายเหตุผลการเลือก พร้อมใช้ Lambda หรือ Pattern อย่างน้อย 1 จุด
Advanced Programming Structure คือการเลือกโครงสร้างและรูปแบบการเขียนโปรแกรมที่ช่วยให้โค้ดยืดหยุ่น นำกลับมาใช้ซ้ำได้ และขยายต่อได้ง่าย
%%{init: {'theme': 'base', 'themeVariables': {'background': '#282828','primaryColor': '#3c3836','primaryTextColor': '#fbf1c7','primaryBorderColor': '#fabd2f','lineColor': '#b8bb26','secondaryColor': '#504945','tertiaryColor': '#665c54'}}}%%
flowchart TD
A[Problem
ปัญหา] --> B[Collection
เลือกโครงสร้างข้อมูล]
B --> C[Generic/Template
ลดโค้ดซ้ำ]
C --> D[Lambda
ส่งพฤติกรรม]
D --> E[Design Pattern
รูปแบบออกแบบ]
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
T maxValue(T a, T b) {
return (a > b) ? a : b; // generic function
}
int main() {
cout << maxValue<int>(3, 7) << endl; // expected: 7
cout << maxValue<double>(2.5, 1.5) << endl; // expected: 2.5
return 0;
}
| แนวคิด | ใช้เมื่อ | ตัวอย่าง |
|---|---|---|
| Template | logic เหมือนกันแต่ชนิดข้อมูลต่างกัน | maxValue |
| Collection | ต้องเก็บข้อมูลหลายรายการ | vector, map |
| Lambda | ต้องส่งพฤติกรรมสั้น ๆ | sort/filter |
| Pattern | มีปัญหาออกแบบซ้ำ ๆ | Factory, MVC |