Functional Programing (FP) hay còn gọi là lập trình hàm đã ra đời từ trong ngành phần phát phần mềm từ những ngày đầu tiên. Bạn đã thực sự nghe nhiều về nó? Hay là phỏng vấn lúc nào cũng được nghe những câu hỏi: OOP là gì? Tính chất của OOP?. 😉 Những gì được viết tiếp theo đây là một bài viết giới thiệu về các Concepts của FP và cung cấp hiểu biết thực tế với các ví dụ trong dart (Ngôn ngữ dùng để code Flutter) với mục đích giúp người đọc làm quen với FP hoặc nhận ra mình đang sử dụng các Concepts FP hằng ngày. 😵‍💫

1. What is FP?

Untitled

(Ảnh sưu tầm)

“Bạn hãy hình dung, các khối nhỏ LEGO brick kia chính là các Hàm , còn con khổng long thành phẩm kia chính là thành phẩm App Flutter  của bạn. Ta muốn xây dựng một App Flutter thì phải bắt đầu từ những viên gạch nhỏ đó là những hàm.” 😝

Đại khái chúng ta lấy hàm làm đơn vị cơ bản để tổ chức code. Lập trình hàm có nghĩa là sử dụng các hàm phối hợp với nhau để có hiệu quả tốt nhất trong việc tạo phần mềm sạch và có thể bảo trì. Cụ thể hơn, lập trình hàm là một tập hợp các phương pháp tiếp cận để coding, thường được mô tả như một mô hình lập trình (Programming Paradigm).

Và giờ chúng ta cùng đến với miền đất hứa của Functional Programming, bỏ qua vùng đất lạnh lẽo, nhàm chán của Imperative Programming đã quá quen thuộc.

Lập trình hàm đôi khi được định nghĩa đối lập với lập trình hướng đối tượng (OOP) và lập trình thủ tục (Procedure Programming). Điều đó là sai lầm vì những cách tiếp cận này không loại trừ lẫn nhau và hầu hết các hệ thống có xu hướng sử dụng cả ba.

Học một cái mới đúng là lằng nhằng tuy nhiên các bạn cũng đừng quá nôn nóng. Hãy dành thời gian đọc những gì tôi viết , cũng như dành thời gian để hiểu những đoạn code ví dụ. Bạn có thể tạm dừng sau mỗi đoạn để nghiền ngẫm hoặc chạy thử, sau đó hãy quay lại và tiếp tục.

<aside> 💡 Điều quan trọng là bạn thực sự hiểu. 😀

</aside>

2. Purity

int add(int x, int y) {
  return x + y;
}

Pure Function

Lý tưởng trong lập trình hàm là các Pure Function (hàm thuần khiết). Nhắc đến Purity(sự thuần khiết) trong FP thì là nhắc đến Pure function 😃. Vậy thì nói về định nghĩa thì nó dài dòng chúng ta sẽ bắt đầu qua các ví dụ.

<aside> 💡 Hầu hết các Pure Function đều có ít nhất một tham số.

</aside>

//Hàm này chỉ trả về giá trị là 1 chi bằng tạo thành biến constant :)

int justOne() {
  return 1;     
}

const int one = 10; 

<aside> 💡 Một Pure Function chỉ có giá trị sử dụng khi có giá trị trả về.

</aside>

final add(a, b) {
	final c = x + y;   // Hàm này có tác dụng gì nhỉ? 😵
}

<aside> 💡 Pure Function sẽ luôn trả về cùng output với cùng input, bất kể có thực hiện bao nhiêu lần.

</aside>