แบบฝึกหัด - ลบบล็อกรหัสออกจากคําสั่งถ้า
นักพัฒนาซอฟต์แวร์ชอบมันเมื่อพวกเขาสามารถเขียนโค้ดที่ช่วยประหยัดการกดแป้นพิมพ์และพื้นที่ภาพโดยไม่ทําให้อ่านง่ายขึ้น ใช้วลี "น้อยกว่าเป็นมากกว่า" ในกระบวนการพัฒนาเท่านั้นเมื่อทําให้โค้ดของคุณอ่านได้และเข้าใจได้ง่ายขึ้น
ถ้าบล็อกรหัสต้องการโค้ดเพียงบรรทัดเดียว มีโอกาสที่คุณไม่จําเป็นต้องกําหนดบล็อกรหัสอย่างเป็นทางการโดยใช้วงเล็บปีกกา แม้ว่าในทางเทคนิคแล้ว คุณไม่จําเป็นต้องแยกโค้ดของคุณเป็นหลายบรรทัด แต่การรวมคําสั่งบนบรรทัดเดียวสามารถทําให้โค้ดของคุณอ่านยาก
การลบวงเล็บปีกกาตามที่อธิบายไว้ข้างต้นคือการเปลี่ยนแปลงรูปแบบที่ไม่ควรส่งผลกระทบต่อการทํางานของโค้ดของคุณ อย่างไรก็ตาม คุณควรดําเนินการเพื่อให้แน่ใจว่าการเปลี่ยนแปลงของคุณจะไม่ส่งผลกระทบเชิงลบต่อวิธีที่โค้ดสามารถอ่านได้ คุณสามารถประเมินผลกระทบของการลบวงเล็บปีกกาและช่องว่างสีขาว จากนั้นแปลงกลับเป็นโค้ดต้นฉบับถ้าคุณพบว่าการเปลี่ยนแปลงทําให้โค้ดของคุณอ่านน้อยลง
สร้างตัวอย่างของคําสั่ง if ที่ใช้บล็อกรหัส
ตรวจสอบให้แน่ใจว่า คุณมีไฟล์ Program.cs ที่ว่างเปล่าเปิดอยู่ในรหัส Visual Studio
หากจําเป็น ให้เปิด Visual Studio Code แล้วทําตามขั้นตอนต่อไปนี้เพื่อเตรียมไฟล์ Program.cs ในตัวแก้ไข:
บนเมนู ไฟล์ เลือก เปิดโฟลเดอร์
ใช้กล่องโต้ตอบ เปิดโฟลเดอร์ เพื่อนําทางไปยัง และจากนั้นเปิดโฟลเดอร์ CsharpProjects
ในแผง Visual Studio Code EXPLORER ให้เลือก Program.cs
บนเมนู การเลือก รหัส Visual Studio เลือก เลือกทั้งหมด แล้วกดปุ่มลบ
พิมพ์โค้ดต่อไปนี้ลงใน Visual Studio Code Editor:
bool flag = true; if (flag) { Console.WriteLine(flag); }บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ
ใส่
dotnet runจากพร้อมท์คําสั่งเทอร์มินัล เพื่อเรียกใช้โค้ดของคุณตรวจสอบว่าคุณเห็นผลลัพธ์ต่อไปนี้:
Trueรหัสของคุณแสดงจุดเริ่มต้นที่ดี แต่คุณมีบล็อกรหัสที่มีโค้ดบรรทัดเดียว ในกรณีนี้ คือการกําหนดบล็อกโค้ดที่จําเป็นหรือไม่
ลบวงเล็บปีกกาออก
โค้ดข้างต้นจะดําเนินการบล็อกรหัสเมื่อ flag เป็นtrue เนื่องจากบล็อกรหัสนี้มีบรรทัดรหัสเดียว คุณมีตัวเลือกในการลบวงเล็บปีกกาออก
อัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
bool flag = true; if (flag) Console.WriteLine(flag);หมายเหตุ
การลบวงเล็บปีกกาจะไม่เปลี่ยนแปลงข้อเท็จจริงที่เป็น
Console.WriteLine(flag);บล็อกโค้ดสําหรับifคําสั่งบันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ
โปรดสังเกตว่าเอาต์พุตเหมือนกับก่อนหน้านี้
คุณยังคงควรเห็นผลลัพธ์ต่อไปนี้:
Trueอย่างไรก็ตาม มีโค้ดน้อยกว่าสองบรรทัด สิ่งสําคัญที่สุดคือ ด้วยบรรทัดโค้ดด้านล่างเยื้อ
ifง โค้ดของคุณยังคงอ่านได้ง่าย
ตรวจสอบความยากง่ายในการอ่านของฟอร์มบรรทัดเดียวถ้าคําสั่ง
ในขั้นตอนนี้ คุณกําลังจะดูกรณีที่ความสามารถในการอ่านโค้ดอาจได้รับผลกระทบในทางลบ
เนื่องจากทั้ง if คําสั่งและการเรียกเมธอด Console.WriteLine() เป็นแบบสั้น คุณอาจถูกชักจูงให้รวมไว้ในบรรทัดเดียว ท้ายสุด ไวยากรณ์ C# สําหรับ if คําสั่งช่วยให้คุณสามารถรวมคําสั่งด้วยวิธีนี้ได้
อัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
bool flag = true; if (flag) Console.WriteLine(flag);บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ
โปรดสังเกตว่าเอาต์พุตยังคงเหมือนเดิม
ใช้เวลาสักครู่เพื่อพิจารณาความยากง่ายในการอ่านโค้ด
ลองนึกถึงตัวอย่างโค้ดสองรายการก่อนหน้าที่ซ้อนอยู่ภายในส่วนที่มีขนาดใหญ่ขึ้นของโค้ด การรวมคําสั่งโค้ด (เหมือนกับที่คุณทําในขั้นตอนที่ 4) อาจทําให้อ่านยากขึ้น
ifเมื่อใช้คําสั่งที่มีบล็อกโค้ดแบบคําสั่งเดียว Microsoft ขอแนะนําให้คุณพิจารณาหลักทั่วไปเหล่านี้:- อย่าใช้ฟอร์มบรรทัดเดียว (ตัวอย่างเช่น: ถ้า (แฟล็ก) Console.WriteLine(ค่าสถานะ);
- ใช้วงเล็บปีกกาเสมอและจําเป็นถ้าบล็อกของคําสั่งผสมถ้า/.../อื่นๆ ใช้วงเล็บปีกกาหรือถ้าเนื้อหาคําสั่งเดียวครอบคลุมหลายบรรทัด
- วงเล็บปีกกาอาจถูกเว้นไว้เฉพาะเมื่อเนื้อความของทุกบล็อกที่เกี่ยวข้องกับคําสั่งผสม if/else ถ้า/.../อื่นๆ อยู่ในบรรทัดเดียว
เพื่อตรวจสอบผลกระทบของความสามารถในการอ่านสําหรับโครงสร้าง if-else-else ที่ใหญ่กว่า ให้อัปเดตโค้ดของคุณดังนี้:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ
เมื่อคุณเรียกใช้โค้ด ควรสร้างเอาต์พุตต่อไปนี้:
Found Steveโค้ดทํางาน แต่บรรทัดของรหัสเหล่านี้หนาแน่นและยากต่อการอ่าน คุณอาจต้องการจัดรูปแบบรหัสใหม่เพื่อรวมตัวแบ่งบรรทัดหลังจาก
ifคําสั่ง ,else ifและelseเปรียบเทียบโค้ดที่คุณเรียกใช้ด้วยโค้ดต่อไปนี้:
string name = "steve"; if (name == "bob") Console.WriteLine("Found Bob"); else if (name == "steve") Console.WriteLine("Found Steve"); else Console.WriteLine("Found Chuck");โปรดสังเกตว่าการอ่านตัวอย่างโค้ดที่สองนั้นง่ายเพียงใด
สรุป
นี่คือบางสิ่งที่สําคัญที่ต้องทราบเกี่ยวกับ if บล็อกโค้ดคําสั่งและความสามารถในการอ่านได้:
- ถ้าคุณตระหนักว่ามีรหัสบรรทัดเดียวเท่านั้นที่แสดงอยู่ภายในบล็อกรหัสของ
if-elseif-elseคําสั่ง คุณสามารถลบวงเล็บปีกกาของบล็อกรหัสและช่องว่างสีขาวได้ Microsoft แนะนําให้ใช้วงเล็บปีกกาอย่างสม่ําเสมอสําหรับบล็อกif-elseif-elseโค้ดทั้งหมดของคําสั่ง (ไม่ว่าจะมีอยู่หรือลบออกอย่างสม่ําเสมอ) - ลบวงเล็บปีกกาของบล็อกโค้ดออกเมื่อทําให้โค้ดอ่านได้ง่ายขึ้น สามารถรวมวงเล็บปีกกาได้เสมอ
- เอาตัวดึงข้อมูลบรรทัดออกเท่านั้นถ้าจะทําให้โค้ดอ่านได้ง่ายขึ้น Microsoft แนะนําว่าโค้ดของคุณจะอ่านได้ง่ายขึ้นเมื่อวางแต่ละคําสั่งบนบรรทัดโค้ดของตนเอง