Bài tập - Loại bỏ các khối mã khỏi câu lệnh if
Các nhà phát triển phần mềm yêu thích nó khi họ có thể viết mã tiết kiệm tổ hợp phím và không gian trực quan mà không làm mất tính dễ đọc. Chỉ áp dụng cụm từ "less is more" trong quá trình phát triển khi nó làm cho mã của bạn dễ đọc hơn và dễ hiểu hơn.
Nếu một khối mã chỉ cần một dòng mã, có khả năng là bạn không cần phải xác định một khối mã chính thức bằng cách sử dụng dấu ngoặc nhọn. Mặc dù về mặt kỹ thuật, bạn thậm chí không cần phân tách mã thành nhiều dòng, việc kết hợp các câu lệnh trên một dòng có thể khiến mã của bạn khó đọc.
Loại bỏ các dấu ngoặc nhọn như được mô tả ở trên là một thay đổi văn phong không ảnh hưởng đến chức năng của mã của bạn. Tuy nhiên, bạn nên thực hiện các bước để đảm bảo rằng các thay đổi của bạn không ảnh hưởng tiêu cực đến mức độ có thể đọc được của mã. Bạn có thể đánh giá tác động của việc loại bỏ các dấu ngoặc nhọn và khoảng trắng, sau đó hoàn nguyên về mã ban đầu nếu bạn thấy rằng các thay đổi làm cho mã của bạn ít dễ đọc hơn.
Tạo ví dụ về câu lệnh if sử dụng khối mã
Đảm bảo rằng bạn có tệp Program.cs trống đang mở trong Mã Visual Studio.
Nếu cần, hãy mở Mã Visual Studio, rồi hoàn thành các bước sau để chuẩn bị tệp Program.cs trong Trình soạn thảo:
Trên menu Tệp , chọn Mở Thư mục.
Sử dụng hộp thoại Mở Thư mục để dẫn hướng đến, rồi mở thư mục CsharpProjects .
Trong pa nen Visual Studio Code EXPLORER, chọn Program.cs.
Trên menu Lựa chọn Mã Visual Studio, chọn Chọn Tất cả, rồi nhấn phím Delete.
Nhập mã sau vào Trình soạn thảo Mã Visual Studio:
bool flag = true; if (flag) { Console.WriteLine(flag); }Lưu tệp mã của bạn, sau đó sử dụng Mã Visual Studio để chạy mã của bạn.
Nhập
dotnet runtừ dấu nhắc lệnh Thiết bị đầu cuối để chạy mã của bạn.Xác minh rằng bạn thấy đầu ra sau đây:
TrueMã của bạn thể hiện một điểm bắt đầu tốt, nhưng bạn có một khối mã bao gồm một dòng mã duy nhất. Trong trường hợp này, xác định một khối mã là cần thiết?
Tháo dấu ngoặc nhọn
Mã ở trên thực thi khối mã khi là flagtrue. Vì khối mã này chứa một dòng mã duy nhất, bạn có tùy chọn loại bỏ dấu ngoặc nhọn.
Cập nhật mã của bạn trong Trình soạn thảo Mã Visual Studio như sau:
bool flag = true; if (flag) Console.WriteLine(flag);Ghi
Việc loại bỏ dấu ngoặc nhọn không làm thay đổi thực tế là
Console.WriteLine(flag);khối mã cho câu lệnhif.Lưu tệp mã của bạn, sau đó sử dụng Mã Visual Studio để chạy mã của bạn.
Lưu ý rằng đầu ra giống như trước đây.
Bạn sẽ vẫn thấy đầu ra sau đây:
TrueTuy nhiên, có hai dòng mã ít hơn. Quan trọng nhất, với dòng mã bên dưới thụt
iflề, mã của bạn vẫn có thể đọc được dễ dàng.
Kiểm tra tính dễ đọc của biểu mẫu đơn dòng nếu câu lệnh
Trong bước này, bạn sẽ xem xét trường hợp trong đó khả năng đọc mã có thể bị tác động tiêu cực.
Vì cả câu if lệnh lẫn cách gọi đều Console.WriteLine() ngắn, bạn có thể muốn kết hợp chúng trên một dòng duy nhất. Sau khi tất cả, cú pháp C# cho câu if lệnh cho phép bạn kết hợp các câu lệnh theo cách này.
Cập nhật mã của bạn trong Trình soạn thảo Mã Visual Studio như sau:
bool flag = true; if (flag) Console.WriteLine(flag);Lưu tệp mã của bạn, sau đó sử dụng Mã Visual Studio để chạy mã của bạn.
Lưu ý rằng đầu ra vẫn giống nhau.
Dành một phút để xem xét tính dễ đọc của mã.
Hãy tưởng tượng hai mẫu mã trước đó được lồng trong một đoạn mã lớn hơn. Việc kết hợp các câu lệnh mã (như bạn đã thực hiện ở bước 4) có thể làm cho việc đọc trở nên khó khăn hơn.
Khi triển khai một tuyên
ifbố bao gồm một khối mã tuyên bố duy nhất, Microsoft khuyên bạn nên xem xét các công ước này:- Không bao giờ sử dụng biểu mẫu một dòng (ví dụ: nếu (cờ) Console.WriteLine(flag);
- Sử dụng dấu ngoặc nhọn luôn được chấp nhận và bắt buộc nếu bất kỳ khối nào của câu lệnh kết hợp if/else if/.../else sử dụng dấu ngoặc nhọn hoặc nếu một nội dung câu lệnh đơn kéo dài nhiều dòng.
- Dấu ngoặc nhọn có thể được bỏ qua chỉ khi thân của mỗi khối liên kết với một câu lệnh kết hợp if/else if/.../else được đặt trên một dòng duy nhất.
Để kiểm tra tác động về khả năng đọc đối với các cấu trúc lớn hơn if-elseif-else, hãy cập nhật mã của bạn như sau:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Lưu tệp mã của bạn, sau đó sử dụng Mã Visual Studio để chạy mã của bạn.
Khi bạn chạy mã, nó sẽ tạo ra đầu ra sau đây:
Found SteveMã chạy, nhưng các dòng mã này có mật độ dày đặc và khó đọc. Bạn có thể muốn định dạng lại mã để đưa vào dấu ngắt dòng sau
if, vàelse ifcác câuelselệnh.So sánh mã mà bạn vừa chạy với mã sau:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");Chú ý đọc mẫu mã thứ hai dễ dàng hơn bao nhiêu.
Recap
Dưới đây là một số điều quan trọng cần ghi nhớ về if khối mã tuyên bố và tính dễ đọc:
- Nếu bạn nhận ra
if-elseif-elserằng mình chỉ có một dòng mã được liệt kê trong các khối mã của câu lệnh, bạn có thể xóa dấu ngoặc nhọn của khối mã và khoảng trắng. Microsoft khuyến cáo rằng dấu ngoặc nhọnif-elseif-elseđược sử dụng một cách nhất quán cho tất cả các khối mã của một câu lệnh (hoặc hiện nay hoặc loại bỏ một cách nhất quán). - Chỉ loại bỏ dấu ngoặc nhọn của một khối mã khi nó làm cho mã dễ đọc hơn. Bạn luôn có thể chấp nhận bao gồm cả dấu ngoặc nhọn.
- Chỉ loại bỏ nguồn cấp dữ liệu dòng nếu nó làm cho mã dễ đọc hơn. Microsoft gợi ý rằng mã của bạn sẽ dễ đọc hơn khi từng câu lệnh được đặt trên dòng mã riêng.