Immutability JS - Functional Programming

Nội dung bài viết

Lời đầu tiên tôi muốn nói đó là nhưng khái niệm sau đây, không cần hiểu kỹ nhưng vẫn có thể làm được. Giống như việc không có bằng lái xe mà vẫn chạy bon bon vậy. Mấy khái niệm này chỉ để dùng trả lời phỏng vấn thôi. Chứ tôi biết anh em đang làm hết rồi, vô tình không biết thôi.

Xưa đến nay có 3 phương pháp tiếp cận để thực hiện viết chương trình đó là lập trình thủ tục (Procedural Programming), hướng đối tượng (Object-Oriented Programming) và cuối cùng hiện đại hơn đó là lập trình hàm (Functional Programming). Giờ trước hết xem xét một chút về 3 thằng này.

Procedural Programming là gì?

Nói như dân ta là lập trình thủ tục. Nghe chữ thủ tục là hiểu rồi, rườm rà lắm. Phải có thủ tục, nghĩa là phải có giấy này, giấy kia mới làm được sổ hổ khẩu. Không có giấy này thì không làm được.

Giấy tạm trú → CMND → Giấy xác nhận 1→… → Giấy N → Hộ khẩu.

Bạn thấy đó, không cần phải giải thích làm gì cho nó mệt. Mỗi bước phụ thuộc vào bước trước đó. Chính xác nó là vậy đó.

object oriented programming là gì

Nói đến OOP là gì? Bài viết Prototype là gì? Lập trình hướng đối tượng (OOP) trong javascript này là quá đủ cho việc giải thích tường tận. Nó đáng giá ăn tiền. Notes lại mà đọc, chứ quên nữa lại tiếc.

Functional Programming

Đây chính là điều ta quan tâm, vì hầu hết anh em dân thổ điạ chuyển qua lập trình hàm rồi. Vì sao? Qua bài viết OOP thì lập trình hướng đối tượng thực hiện điều tương tự mà lập trình thủ tục làm nhưng với một số sửa đổi.

Functional Programming là một phương pháp lập trình có một cách tiếp cận hoàn toàn khác. Ở đây các chương trình được xây dựng bằng cách áp dụng và sẵn các hàm. Các hàm nhỏ hơn có thể được sử dụng để soạn các hàm lớn hơn. Chúng ta cố gắng ràng buộc mọi thứ theo kiểu hàm toán học thuần túy . Sử dụng các hàm thuần túy thay vì các thủ tục sẽ tránh được trạng thái có thể thay đổi. Trọng tâm chính là giải quyết những gì trái ngược với phong cách lập trình thủ tục trước đây, nơi trọng tâm chính là cách giải quyết .

Ví dụ:

//  Kiểu lập trình mệnh lệnh
const list = [1, 2, 3, 4, 5];
const item = list[list.length - 1];
//  Kiểu lập trình khai báo, 
// Functional Programming liên quan đến mô hình này

const list = [1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 15, 16, 18, 20];
const item = getLastItem(list);

Với sự hiểu biết cơ bản này, chúng ta hãy cố gắng hiểu một số khái niệm cơ bản trong FP. Đầu ttiên đó làImmutability JS

Immutability JS

Đương nhiên cụm từ immutability js đã được giới thiệu kỹ, với nhiều ví dụ và áp dụng ở bài viết trước đó. Sơ qua một chút.

  • Immutable có nghĩa là không thể thay đổi.
  • Sau khi khởi tạo, bạn sẽ không bao giờ thay đổi nó nữa.
  • Không thay đổi các phần tử trong một mảng và không thay đổi các thuộc tính trong một đối tượng.
  • Nếu muốn sửa gì đó, xin mới mang máy photocopy ra mà sửa.

Ví dụ: người ta nên tạo một bản sao mới của một mảng hoặc một đối tượng có giá trị đã thay đổi.

let person = {
    name: 'Anonystick',
    profession: 'Developer',
    description: ` Bad Developer`,
};

person.name = 'CR7';

person.description = `World's greatest Player`;

// Muốn đổi thì photo ra.

const person = {
    name: 'Anonystick',
    profession: 'Developer',
    description: ` Bad Developer`,
};

const updatedPerson = {
    ...person,
    name: 'CR7',
};

const greatestLawyer = {
    ...updatedPerson,
    description: `World's greatest Player`,
};

Còn nữa...

Có thể bạn đã bị missing