Ủa alo, có ai từng nhìn lại code mình viết hồi mới tập tọe xong muốn đấm vào màn hình không? 🥊 Mình cá là 99.69% các bro/sis newbie sẽ gật đầu lia lịa! Nhìn cái đống hỗn độn mà mình từng gọi là "project" ấy, mình chỉ muốn quay ngược thời gian tát mình một cái thật đau. 😩 Kiểu như: "Hồi đó mày nghĩ gì mà code ra được cái cục này vậy con?!"
Đừng lo, bạn không hề cô đơn đâu! Cảm giác này nó real cực kỳ. Và đây cũng là lúc mình "flex" nhẹ skill blogger Gen Z của mình để chia sẻ một vài tips "đỉnh của chóp" giúp bạn biến code từ "mớ bòng bong" thành "kiệt tác" nghệ thuật, nhìn là mê, đọc là hiểu! 🎨💻
Hôm nay, chúng ta sẽ "vibe check" về chủ đề: Clean Code for Newbie. Nghe có vẻ "pro" quá đúng không? Nhưng tin mình đi, đây là kỹ năng vàng giúp bạn không chỉ được team yêu quý mà còn giúp chính bạn đỡ "stress" mỗi khi quay lại debug code cũ của mình. Let's dive in! 🏄♀️
Cú Vibe Đầu Tiên: Đặt Tên Sao Cho Ngầu (và Dễ Hiểu)! 🏷️
Tên biến, tên hàm, tên class... nó giống như cái tên của bạn vậy. Đừng để người ta phải "hack não" mỗi khi nhìn vào code của bạn chỉ vì cái tên nó khó hiểu quá trời quá đất! 🤯
Biến "a", "b", "c" Thành "Real" Tên Biến! 🧐
- Câu chuyện drama: Mình từng có một ông bạn code C++, đặt tên biến là `x`, `y`, `z` khắp nơi. Rồi đến khi debug, cả team phải ngồi giải mã "thần số học" của ổng. Quá là drama! 🎭
- Tips "real": Hãy đặt tên biến, hàm, class sao cho nó nói lên ý nghĩa và mục đích của nó. Đừng biến code thành bài trắc nghiệm IQ nha mấy bro/sis! 💡Tên càng rõ ràng, bạn (và đồng nghiệp của bạn) càng ít tốn thời gian để "giải mã" code. Cái vibe này mới gọi là "slay" đó!
- Thay vì
int d;(d là cái gì?), hãy dùngint daysInMonth;hoặcint discountPercentage;. - Thay vì
void calculate();, hãy dùngvoid calculateTotalPrice();.
- Thay vì
Quy Tắc "Đồng Bộ" Đỉnh Của Chóp! 📏
- Real talk: Mỗi ngôn ngữ lập trình có thể có các quy tắc đặt tên khác nhau (camelCase, snake_case, PascalCase...). Quan trọng là bạn chọn một quy tắc rồi theo đến cùng.
- Tips "real":Đừng hôm nay dùng cái này, mai dùng cái kia. Code bạn sẽ trông như một bản hòa tấu của đủ loại nhạc cụ mà chẳng có nhạc trưởng vậy. 😵💫 Consistency is key, bạn ơi!
- Ví dụ, nếu bạn dùng
camelCasecho biến và hàm (myVariableName,calculateSum()), thì cứ thế mà triển khai. - Nếu dùng
PascalCasecho Class (MyAwesomeClass), thì cứ theo.
- Ví dụ, nếu bạn dùng
Code Nhìn Là Mê: Format Đúng Chuẩn Dev "Soái Ca/Chị Đại"! ✨
Code đẹp không chỉ là code chạy được, mà còn là code nhìn vào thấy "chill", thấy "art". Giống như một căn phòng gọn gàng sạch sẽ vậy đó. 🏠
Xuống Dòng Đúng Chỗ, Đừng Có "Dính Nhau" Quá! 👯
- Tình huống éo le: Bạn đã bao giờ mở một file code mà nó dài lê thê, các dòng cứ dính chùm vào nhau như mì gói chưa? 🍝 Mình thề là mình đã từng muốn bỏ nghề vì cái trải nghiệm kinh hoàng đó!
- Tips "real": Hãy sử dụng khoảng trắng và dòng trống một cách hợp lý để tách biệt các khối logic hoặc các phần khác nhau của code.Code như thơ vậy, mỗi dòng một ý, mỗi đoạn một chủ đề. Nhìn vào cái vibe nó "fresh" liền! 🍃
- Mỗi chức năng nhỏ, mỗi đoạn logic riêng biệt nên có một khoảng trống để "thở".
- Ví dụ, sau khi khai báo biến, bạn có thể để một dòng trống trước khi bắt đầu khối lệnh chính.
Thụt Lề (Indentation) - Phép Thuật Giúp Code Dễ Đọc! 🪄
- Cảnh báo drama: Code mà không có indentation (thụt lề) thì giống như một mê cung không lối thoát vậy. Bạn sẽ không biết khối lệnh nào thuộc về cái gì đâu. 🕵️♀️
- Tips "real": Luôn luôn thụt lề đúng cách cho các khối lệnh (if/else, for/while, hàm, class...). Hầu hết các IDE (như VS Code, IntelliJ) đều có tính năng tự động format. Hãy dùng nó!Indentation đúng chuẩn là một skill "quá là slay" để bạn show off code của mình đó!
- Chọn 2 space hay 4 space, hay Tab, không quan trọng bằng việc duy trì nhất quán.
Dài Quá Không Tốt Đâu Nhé! (Về Độ Dài Dòng Code) 📜
- Thực tế phũ phàng: Ai mà đọc nổi một dòng code dài 200 ký tự chứ? Mình thề là mắt mình sẽ bị loạn thị luôn á. 😵
- Tips "real": Cố gắng giữ độ dài mỗi dòng code dưới 80-120 ký tự (tùy theo quy ước của team/ngôn ngữ). Nếu một dòng quá dài, hãy chia nhỏ nó ra thành nhiều dòng.Code ngắn gọn, súc tích, nhìn là "chill".
- Đặc biệt là khi có nhiều điều kiện trong
ifhoặc các phép tính phức tạp.
- Đặc biệt là khi có nhiều điều kiện trong
"Drama" Của Comment: Khi Nào Nên Viết, Khi Nào Nên "Chill"! 💬
Comment không phải là để giải thích "cái gì" code đang làm, mà là để giải thích "tại sao" nó làm vậy. ✨
Comment Để Giải Thích "Tại Sao", Chứ Không Phải "Cái Gì"! 🤔
- Tips "real":Comment "chất lượng" là comment cung cấp thêm giá trị, chứ không phải chỉ là bản sao chép của code. Vibe này mới là "pro" nè!
- Chỉ comment những đoạn code phức tạp, các thuật toán "hóc búa", các quy tắc nghiệp vụ đặc biệt (business logic), hoặc các lý do đằng sau một quyết định thiết kế.
- Nếu code của bạn đã clear như nước suối, đừng cố gắng thêm comment kiểu "đây là biến x" nữa nha. Hãy để code tự nói lên tất cả! 🗣️
Thực tế phũ phàng:
// Khai báo biến tuổi
int age = 20; Ai mà không biết int age = 20; là khai báo biến tuổi chứ? Cái này gọi là comment "vô tri" đó nha! 🙈
Đừng Để Comment "Lỗi Thời"! ⏰
- Hậu quả khôn lường: Comment nói một đằng, code làm một nẻo. Cái vibe này là toang rồi! 💥 Bạn hoặc người khác đọc vào sẽ bị hoang mang cực độ.
- Tips "real": Mỗi khi bạn thay đổi code, hãy dành một chút thời gian để cập nhật comment liên quan (nếu có). Hoặc tốt nhất, hãy viết code sao cho nó dễ hiểu đến mức không cần comment. Đó mới là "đỉnh của chóp"! 💯
Refactor Code – Biến Cóc Ghẻ Thành Thiên Nga! 🦢
Refactor là quá trình cải thiện cấu trúc bên trong của code mà không làm thay đổi hành vi bên ngoài của nó. Nghe phức tạp vậy thôi chứ nó là cách bạn "tút tát" cho code đẹp hơn đó!
Chia Nhỏ Hàm/Class - Mỗi Cái Một Nhiệm Vụ Thôi! 🧩
- Tội nghiệp bạn code: Đừng bắt một hàm (function) làm cả tá việc, tội nghiệp em nó! Kiểu như một người mà phải vừa nấu ăn, vừa lau nhà, vừa trông con, vừa làm việc nhà nước vậy đó. Stress lắm! 😩
- Tips "real": Hãy áp dụng nguyên tắc "Single Responsibility Principle" (SRP). Tức là, mỗi hàm hoặc mỗi class chỉ nên có một lý do duy nhất để thay đổi, hay nói cách khác, chỉ làm một việc và làm thật tốt việc đó.Code nhìn vào sẽ gọn gàng, dễ hiểu, dễ test và dễ bảo trì hơn nhiều. Quá là tiện lợi!
- Nếu hàm của bạn dài quá 20-30 dòng, hoặc bạn thấy nó đang làm quá nhiều thứ, hãy nghĩ đến việc chia nhỏ nó ra.
- Ví dụ, một hàm
processOrder()có thể chia thànhvalidateOrder(),calculateTotal(),saveOrderToDatabase(),sendConfirmationEmail().
Đừng Sợ Xóa Code "Thừa"! 🗑️
- Sợ hãi vô cớ: Nhiều newbie hay có tâm lý "tiếc" code, không dám xóa đi những đoạn code không dùng đến, hay những đoạn code cũ đã bị thay thế. Thế là project cứ phình to ra một cục. 📈
- Tips "real": Nếu bạn chắc chắn một đoạn code không còn được sử dụng, hãy mạnh dạn xóa nó đi. Đừng lo lắng về việc mất mát, vì đã có Git/Version Control Systems lo rồi! 💪Thà xóa đi làm lại, còn hơn giữ lại một mớ hỗn độn. Hãy giữ cho codebase của bạn thật "clean" và "light" nhé!
- Code không dùng đến chỉ làm tăng sự phức tạp và khó hiểu của project thôi.
Kết Lại: "Clean Code" Là Một Hành Trình "Chill" ✨
Viết clean code không phải là cái gì đó quá cao siêu hay chỉ dành cho "senior dev" đâu nha mấy bro/sis. Nó là một thói quen tốt mà bạn nên xây dựng ngay từ khi mới bắt đầu. Giống như việc tập gym vậy, kiên trì mỗi ngày một chút sẽ thấy thành quả "slay" lắm đó! 🏋️
Hãy nhớ, clean code không chỉ giúp người khác đọc code của bạn dễ dàng hơn, mà quan trọng hơn, nó giúp chính bạn đỡ "nhức cái đầu" mỗi khi quay lại code của mình sau một thời gian. 🤯
Giờ thì, apply liền mấy tips này rồi show off skill clean code của bạn dưới comment cho mình biết đi! 🚀 Ai mà code đẹp quá, mình sẽ thả tim nhiệt tình! ❤️🔥 Hoặc nếu bạn có bí kíp gì hay ho hơn, đừng ngại flex nhẹ nha, mình rất sẵn lòng học hỏi từ các bạn dev "đỉnh của chóp" khác đó!