Functional Programming
Cheat sheet for Functional Programming
Functional Programming
แนวคิด Functional Programming มุ่งเน้นการเขียนโปรแกรมโดยใช้ Pure Functions และหลีกเลี่ยง Shared State หรือ Mutable Data
Pure Functions
Pure Functions คือฟังก์ชันที่มีคุณสมบัติดังนี้:
- ให้ Output ที่เหมือนเดิมเสมอเมื่อได้รับ Input เดียวกัน (Deterministic)
- ไม่มี Side Effects หรือการเปลี่ยนแปลง State นอกฟังก์ชัน
Immutability
Immutability หมายถึงการที่ Data ไม่สามารถถูกเปลี่ยนแปลงได้หลังจากถูกสร้างขึ้น หากต้องการปรับเปลี่ยน Data จะต้องสร้าง Data ขึ้นมาใหม่แทนการแก้ไข Data เดิม
Higher-Order Functions
Higher-Order Functions คือฟังก์ชันที่สามารถรับฟังก์ชันอื่นเป็น Argument หรือสามารถคืนค่า Output เป็นฟังก์ชันได้ ซึ่งช่วยในการทำ Function Composition และการสร้าง Abstraction ที่มีความยืดหยุ่นสูง
Declarative vs Imperative
- Declarative: การเขียนโค้ดที่อธิบายว่าต้องการผลลัพธ์อะไร (What to do) เช่น การใช้
map,filter, หรือreduce - Imperative: การเขียนโค้ดที่ระบุขั้นตอนการทำงานอย่างละเอียด (How to do) เช่น การใช้
forloop ในการเปลี่ยนแปลงตัวแปร State