Haha, câu hỏi này xứng đáng 10 điểm! Bất kỳ ai chập chững bước vào đường code cũng từng kêu trời y hệt bạn: "Có đồ xịn tận răng sao bắt xài đồ cổ chi cho cực não?".
Nhưng để tôi "tát một gáo nước lạnh" thực tế vào mặt bạn nhé: Làm web bằng các trình dựng sẵn thì mọi thứ đã có công cụ dọn sẵn tận miệng, nhưng một khi đã dấn thân vào học logic lập trình để xây dựng sự nghiệp nghiêm túc, thì luật chơi nó khác hoàn toàn.
Dưới đây là 3 lý do cốt lõi tại sao các khóa học luôn bắt bạn phải giải quyết vấn đề theo cách "khổ sai" trước:
1. Khác biệt giữa "Thợ gõ" và "Kỹ sư giải quyết vấn đề"
Hàm replaceAll() hay các hàm hiện đại nó là đồ ăn liền. Nếu bạn chỉ biết gọi hàm, bạn chỉ là người sử dụng công cụ. Nhưng khi chuẩn bị hành trang để tiến thân vào những môi trường công nghệ cạnh tranh gắt gao hơn (như ở Sài Gòn chẳng hạn), các công ty không trả lương cao cho bạn chỉ để... nhớ tên hàm.
Họ trả tiền để bạn hiểu bản chất bên dưới hệ thống. Nếu một ngày hệ thống cũ không hỗ trợ replaceAll, hoặc bạn chuyển sang học một ngôn ngữ lập trình khác không có hàm đó, người đã thấu hiểu cơ chế split và join sẽ tự tư duy và viết ra được một cái "replaceAll" cho riêng mình.
2. Bài tập tạ cho não bộ (Rèn tư duy nhào nặn dữ liệu)
Mục đích của bài tập F8 không phải là để "tìm và bôi đậm chữ". Đó chỉ là cái vỏ bọc thôi! Mục đích thật sự là ép não bạn phải làm quen với thao tác: Cắt một Chuỗi ra thành Mảng ➔ Xử lý phần tử trên Mảng ➔ Ép Mảng đó dính ngược lại thành Chuỗi.
Kỹ năng "nhào nặn" qua lại giữa Chuỗi, Mảng và Object là kỹ năng SỐNG CÒN. Sau này khi xử lý hàng ngàn dòng dữ liệu từ API đổ về, bạn sẽ dùng tuyệt chiêu bẻ gãy và lắp ráp này liên tục. Nếu không tập từ những bài nhỏ, gặp dữ liệu lớn bạn sẽ bị ngợp ngay.
3. "Đặc sản" của các buổi phỏng vấn xin việc
Khi đi phỏng vấn, các nhà tuyển dụng rất thích hỏi những câu gài bẫy kiểu: "Em hãy viết chức năng đếm từ, nhưng KHÔNG ĐƯỢC dùng các hàm có sẵn".
Lúc đó, những ai chỉ quen xài "đồ xịn" sẽ đứng hình toàn tập. Còn bạn, vì đã từng trầy trật bị hành hạ qua vòng lặp, tự nặn ra cái "heo đất" reduce, tự bốc xuất dữ liệu bằng Object.keys, bạn sẽ đủ tư duy để múa phím giải quyết rốt ráo.
Chốt lại nguyên tắc:
Khi đi làm dự án thực tế: Cứ cái gì xịn nhất, ngắn nhất, mới nhất (
replaceAll) mà giã! Vì lúc đó thời gian của công ty là tiền bạc, code càng ngắn càng ít sinh ra bug.Khi đang đi học: Bắt buộc phải đâm đầu vào cách cồng kềnh nhất, nguyên thủy nhất để bóc tách tận gốc rễ của luồng bộ nhớ.
Giờ thì bạn đã hiểu được "khổ nhục kế" của việc học logic lập trình rồi chứ? Nhìn lại toàn bộ 5 hàm trong file baitap2.js, bạn đã tự tin nắm được 100% luồng chạy dữ liệu để bấm nút nộp bài luôn chưa, hay còn muốn tôi review lại một lượt cho chuẩn "Clean Code" không?