0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Clean Code #3: Hướng Dẫn Viết Điều Kiện Trong Lập Trình (Phần 1)

Đăng vào 1 tháng trước

• 4 phút đọc

Chủ đề:

#AppMobile

1. Nguyên Tắc Viết Câu Điều Kiện Trong Lập Trình

Khi viết câu điều kiện trong lập trình, có 4 nguyên tắc cơ bản cần lưu ý:

a. Ý Định Rõ Ràng (Clear Intent):

  • Một câu điều kiện tốt cần truyền đạt rõ ràng ý định của lập trình viên. Tương tự như trong cuộc sống, việc bạn chỉ biết qua loa hướng đi tại một ngã ba đường là chưa đủ. Hiểu rõ lý do cho quyết định của bạn là rất cần thiết.
  • Nếu các lập trình viên tạo ra các biển báo trên đường, vẫn có rất nhiều biển gây nhầm lẫn cho người dùng. Hiểu ý định ban đầu của lập trình viên là một thách thức lớn.

"Hiểu ý định của lập trình viên ban đầu là bài toán khó nhất." (Fjelstad & Hamlen)

b. Sử Dụng Công Cụ Đúng (Use the Right Tool):

  • Việc chọn công cụ phù hợp là yếu tố nền tảng cho việc viết mã sạch. Với nhiều cách tiếp cận khác nhau, cần cân nhắc đến người đọc khi lựa chọn.

c. Logic Ngắn Gọn (Bite-size Logic):

  • Các câu điều kiện nên được viết một cách ngắn gọn để dễ dàng cho não bộ con người tiếp nhận và hiểu ngay lập tức. Chúng ta sẽ tìm hiểu cách làm cho các câu điều kiện phức tạp trở nên rõ ràng hơn.

d. Đôi Khi Mã Không Phải Là Đáp Án (Sometimes Code Isn’t the Answer):

  • Mã không phải lúc nào cũng là giải pháp. Trong một số trường hợp, một câu điều kiện có thể bị bỏ qua hoàn toàn.

2. Viết Câu Điều Kiện So Sánh Boolean:

Boolean là lựa chọn tự nhiên cho các quyết định true/false. Tuy nhiên, nhiều lập trình viên thường so sánh Boolean với truefalse một cách không cần thiết, khiến câu điều kiện trở nên rối rắm.

Ví Dụ:

🔴 Phiên Bản Không Sạch

csharp Copy
if(loggedIn == true) {
  // làm điều gì đó
}

🟢 Phiên Bản Sạch

csharp Copy
if(loggedIn) {
  // làm điều gì đó
}

Chú Ý: Phiên bản sạch tự nhiên hơn và dễ đọc hơn. Bạn sẽ dùng câu nào trong thực tế? "Nếu đã đăng nhập", hay "Nếu bạn đã đăng nhập chưa?"

Đặt Tên Biến:

Khi so sánh Boolean, đặt tên biến điều kiện nên giống như cách bạn hỏi người đọc. Ví dụ: isActive, isEnabled, isShown,....

3. Gán Giá Trị Boolean:

Mục tiêu khi viết mã sạch là làm giảm độ ồn trong code. Vì vậy, nên gán Boolean một cách ngầm định.

Ví Dụ:

🔴 Phiên Bản Không Sạch

csharp Copy
if(ageOfUser > 18) {
  isValidAge = true;
} else {
  isValidAge = false;
}

🟢 Phiên Bản Sạch

csharp Copy
bool isValidAge = ageOfUser > 18;

Nguyên Tắc Gán Boolean:

  1. Ít Dòng Hơn: Giảm thiểu số dòng code cần thiết.
  2. Không Khởi Tạo Riêng Biệt: Tránh lãng phí dòng mã.
  3. Không Lặp Lại: Giảm nguy cơ lỗi do phải viết lại nhiều dòng.
  4. Đọc Như Nói: Phiên bản sạch đọc dễ dàng và tự nhiên hơn.

4. Điều Kiện Khẳng Định (Positive Conditionals):

Bộ não của chúng ta thường dễ dàng hiểu lời khẳng định hơn là phủ định. Hãy sử dụng những điều kiện khẳng định cho mã nguồn của bạn.

Ví Dụ:

🔴 Phiên Bản Không Sạch

csharp Copy
if(!isNotLoggedIn) {
  // làm điều gì đó
}

🟢 Phiên Bản Sạch

csharp Copy
if(loggedIn) {
  // làm điều gì đó
}

Tóm Lại: Nếu bạn thấy mình sử dụng điều kiện phủ định, hãy cố gắng chuyển nó sang dạng khẳng định.

5. Tính Thanh Lịch Của Toán Tử Ternary (Ternary Elegance):

Hãy viết mã thật ngắn gọn và dễ hiểu bằng cách sử dụng toán tử ternary.

Ví Dụ:

🔴 Phiên Bản Không Sạch

csharp Copy
int employeeBonus = 0;
if(isEmployee) {
  employeeBonus = 100;
} else {
  employeeBonus = 0;
}

🟢 Phiên Bản Sạch

csharp Copy
int employeeBonus = isEmployee ? 100 : 0;

Chú Ý: Tránh lạm dụng nhiều toán tử ternary trong một điều kiện.

6. Kiểu Dữ Liệu Mạnh (Stringly Typed):

Sử dụng enumerations (enum) để đảm bảo kiểu dữ liệu mạnh và ngăn ngừa lỗi đánh máy.

Ví Dụ:

🔴 Phiên Bản Không Sạch

csharp Copy
if(employeeType == 'manager') {
  // làm điều gì đó
}

🟢 Phiên Bản Sạch

csharp Copy
if(employee.Type == EmployeeType.Manager) {
  // làm điều gì đó
}

Lợi Ích Của Kiểu Dữ Liệu Mạnh:

  1. Không có lỗi đánh máy: Kiểu dữ liệu mạnh giúp ngăn ngừa lỗi.
  2. Hỗ trợ Intellisense: Giúp nhanh chóng hoàn tất mã.
  3. Tài liệu rõ ràng: Giúp ghi chú các giá trị có thể.
  4. Dễ dàng tìm kiếm: Hỗ trợ tìm kiếm hiệu quả hơn trong mã.

Vì phần này khá dài, chúng ta sẽ tiếp tục với phần 2 trong bài viết tiếp theo "Clean Code #3: Viết Các Điều Kiện (Conditionals) (Phần 2)".
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào