แบบฝึกหัด - สร้างข้อคิดเห็นของโค้ดที่มีประสิทธิภาพ
ในแบบฝึกหัดนี้ คุณจะเพิ่มบันทึกย่อในโค้ดของคุณและปิดใช้งานบางบรรทัดของโค้ดชั่วคราวจากการคอมไพล์ จากนั้นคุณจะได้ดูว่าคอมไพเลอร์ C# เข้าใจช่องว่างและวิธีใช้ช่องว่างได้อย่างไร เพื่อเพิ่มความยากง่ายในการอ่านโค้ดของคุณ
ข้อคิดเห็นเกี่ยวกับรหัสคืออะไร
คอมไพเลอร์คอมไพเลอร์ละเว้นทุกอย่างหลังจากสัญลักษณ์ความคิดเห็นรหัสในบรรทัดปัจจุบัน
// This is a code comment!
ซึ่งอาจดูไม่มีประโยชน์ในตอนแรก อย่างไรก็ตามมีประโยชน์ในสามสถานการณ์:
- เมื่อคุณต้องการออกจากบันทึกเกี่ยวกับเจตนาของการส่งผ่านรหัส จะเป็นประโยชน์มากในการรวมความคิดเห็นโค้ดที่อธิบายวัตถุประสงค์หรือกระบวนการคิดเมื่อคุณเขียนชุดคําแนะนําการเขียนโค้ดที่ท้าทายเป็นพิเศษ ตนเองในอนาคตของคุณจะขอบคุณ
- เมื่อคุณต้องการลบโค้ดชั่วคราวออกจากแอปพลิเคชันของคุณ เพื่อลองใช้วิธีการอื่น แต่คุณยังไม่ได้ทําให้แนวคิดใหม่ของคุณสามารถใช้งานได้ คุณสามารถแสดงความคิดเห็นรหัสเขียนรหัสใหม่และเมื่อคุณโน้มน้าวใจรหัสใหม่จะทํางานในแบบที่คุณต้องการคุณสามารถลบเก่าได้อย่างปลอดภัย (รหัสที่แสดงความคิดเห็น)
- เพิ่มข้อความเช่น
TODOการเตือนคุณเพื่อดูทางเดินที่กําหนดของรหัสในภายหลัง แม้ว่าคุณควรใช้สิ่งนี้อย่างพิพากษาแต่ก็เป็นวิธีที่มีประโยชน์ คุณอาจกําลังทํางานกับคุณลักษณะอื่นเมื่อคุณอ่านบรรทัดของโค้ดที่จุดประกายความกังวล แทนที่จะละเว้นความกังวลใหม่ คุณสามารถทําเครื่องหมายสําหรับการตรวจสอบในภายหลัง
หมายเหตุ
ควรใช้ข้อคิดเห็นเกี่ยวกับรหัสเพื่อระบุว่าโค้ดไม่สามารถทําอะไรได้ บ่อยครั้งที่นักพัฒนาอัปเดตรหัสของพวกเขา แต่ลืมที่จะอัปเดตความคิดเห็นรหัส เป็นการดีที่สุดที่จะใช้ข้อคิดเห็นสําหรับแนวคิดระดับสูงกว่าและไม่เพิ่มข้อคิดเห็นเกี่ยวกับวิธีการทํางานของแต่ละบรรทัดของโค้ด
เตรียมสภาพแวดล้อมการเข้ารหัสของคุณ
โมดูลนี้ประกอบด้วยแบบฝึกหัดที่แนะนําคุณเกี่ยวกับกระบวนการสร้างและการเรียกใช้โค้ดตัวอย่าง คุณควรทํากิจกรรมเหล่านี้ให้เสร็จสมบูรณ์โดยใช้ Visual Studio Code เป็นสภาพแวดล้อมการพัฒนาของคุณ การใช้ Visual Studio Code สําหรับกิจกรรมเหล่านี้จะช่วยให้คุณเขียนและเรียกใช้โค้ดในสภาพแวดล้อมของนักพัฒนาที่มืออาชีพใช้ทั่วโลกได้อย่างสะดวกขึ้น
เปิด Visual Studio Code
คุณสามารถใช้เมนูเริ่มต้นของ Windows (หรือทรัพยากรที่เทียบเท่าสําหรับระบบปฏิบัติการอื่น) เพื่อเปิด Visual Studio Code
บนเมนู ไฟล์ รหัส Visual Studio เลือก เปิดโฟลเดอร์
ในกล่องโต้ตอบ เปิดโฟลเดอร์ ให้ไปยังโฟลเดอร์ Windows Desktop
หากคุณมีตําแหน่งโฟลเดอร์อื่นที่คุณเก็บโครงการโค้ดไว้ คุณสามารถใช้ตําแหน่งโฟลเดอร์นั้นแทนได้ สําหรับการฝึกนี้ สิ่งสําคัญคือการมีตําแหน่งที่ตั้งที่ง่ายต่อการค้นหาและจดจํา
ในกล่องโต้ตอบ เปิด โฟลเดอร์ ให้เลือก เลือกโฟลเดอร์
ถ้าคุณเห็นกล่องโต้ตอบความปลอดภัยที่ถามว่าคุณเชื่อถือผู้เขียนหรือไม่ ให้เลือก ใช่
บนเมนู เทอร์มินัล Visual Studio Code ให้เลือก เทอร์มินัลใหม่
โปรดสังเกตว่าพร้อมท์คําสั่งในแผงเทอร์มินัล จะแสดงเส้นทางโฟลเดอร์สําหรับโฟลเดอร์ปัจจุบัน เช่น:
C:\Users\someuser\Desktop>หมายเหตุ
ถ้าคุณกําลังทํางานบนพีซีของคุณเองแทนที่จะเป็น Sandbox หรือสภาพแวดล้อมที่เป็นโฮสต์ และคุณจบมอดูล Microsoft Learn อื่นๆ ใน C# ซีรี่ส์นี้ คุณอาจสร้างโฟลเดอร์โครงการสําหรับตัวอย่างโค้ดไว้แล้ว ถ้าเป็นกรณีนี้ คุณสามารถข้ามขั้นตอนถัดไป ซึ่งใช้เพื่อสร้างแอปคอนโซลในโฟลเดอร์ TestProject
ที่พรอมต์คําสั่งเทอร์มินัล หากต้องการสร้างแอปพลิเคชันคอนโซลใหม่ในโฟลเดอร์ที่ระบุ ให้ป้อนพร้อมท์ต่อไปนี้:
dotnet new console -o ./CsharpProjects/TestProjectคําสั่ง .NET CLI นี้ใช้เทมเพลตโปรแกรม .NET เพื่อสร้างโครงการแอปพลิเคชันคอนโซล C# ใหม่ในตําแหน่งที่ตั้งโฟลเดอร์ที่ระบุ คําสั่งจะสร้างโฟลเดอร์ CsharpProjects และ TestProject ให้คุณ และใช้ TestProject เป็นชื่อของไฟล์ของคุณ
.csprojถ้ามีข้อความแสดงขึ้นเพื่อบอกให้คุณทราบว่ามีไฟล์อยู่แล้ว ให้ทําตามขั้นตอนถัดไป คุณจะใช้ไฟล์โครงการที่มีอยู่อีกครั้ง
ในมุมมอง EXPLORER ให้ขยายโฟลเดอร์ CsharpProjects
คุณควรเห็นโฟลเดอร์ TestProject และแฟ้มสองแฟ้ม แฟ้มโปรแกรม C# ที่ชื่อว่า Program.cs และแฟ้มโครงการ C# ที่ชื่อ TestProject.csproj
บนเมนู ไฟล์ รหัส Visual Studio เลือก เปิดโฟลเดอร์
ในกล่องโต้ตอบ เปิดโฟลเดอร์ เลือกโฟลเดอร์ CsharpProjects จากนั้นเลือก เลือกโฟลเดอร์
ในมุมมอง EXPLORER ให้ขยายโฟลเดอร์ TestProject จากนั้นเลือก Program.cs
ลบบรรทัดรหัสที่มีอยู่
คุณจะใช้โครงการคอนโซล C# นี้เพื่อสร้าง สร้าง และเรียกใช้ตัวอย่างโค้ดในระหว่างโมดูลนี้
ปิดแผงเทอร์มินัล
สร้างและใช้ข้อคิดเห็นเกี่ยวกับรหัส
ในงานนี้ คุณจะสร้างและลบข้อคิดเห็นเกี่ยวกับรหัสชนิดต่างๆ
ในแผงตัวแก้ไขรหัส Visual Studio ให้ป้อนโค้ดต่อไปนี้:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine($"{firstName} sold {widgetsSold} widgets.");หากต้องการแก้ไขโค้ดของคุณด้วยความคิดเห็นและการแก้ไขโค้ด ให้อัปเดตโค้ดของคุณดังนี้:
string firstName = "Bob"; int widgetsPurchased = 7; // Testing a change to the message. // int widgetsSold = 7; // Console.WriteLine($"{firstName} sold {widgetsSold} widgets."); Console.WriteLine($"{firstName} purchased {widgetsPurchased} widgets.");ใช้เวลาสักครู่เพื่อตรวจสอบความคิดเห็นและการอัปเดตโค้ดของคุณ
โปรดสังเกตว่าข้อคิดเห็นรหัสจะถูกใช้เพื่อบันทึกการเปลี่ยนแปลงที่อาจเกิดขึ้น และเพื่อปิดใช้งานข้อความเก่าชั่วคราวขณะที่คุณทดสอบข้อความใหม่ ขั้นตอนถัดไปของคุณคือการทดสอบการอัปเดตของคุณ หากคุณพอใจกับรหัสใหม่คุณสามารถลบรหัสเก่าที่แสดงความคิดเห็นได้อย่างปลอดภัย นี่เป็นวิธีการที่ปลอดภัยและเป็นระเบียบมากขึ้นในการปรับเปลี่ยนรหัสการทํางานจนกว่าคุณจะมั่นใจได้ว่าคุณพร้อมที่จะลบออกอย่างถาวร
บนเมนู ไฟล์ของ Visual Studio Code ให้คลิก บันทึก
ในมุมมอง EXPLORER เมื่อต้องการเปิดเทอร์มินัลที่ตําแหน่งที่ตั้งโฟลเดอร์ TestProject ของคุณ ให้คลิกขวาที่ TestProject จากนั้นเลือกเปิดในเทอร์มินัลรวม
ที่พร้อมท์คําสั่งเทอร์มินัล ให้พิมพ์ dotnet run แล้วกด Enter
คุณควรเห็นผลลัพธ์ต่อไปนี้:
Bob purchased 7 widgets.อีกครั้งหากคุณพอใจกับการอัปเดตของคุณ ให้ลบรหัสเก่าที่แสดงความคิดเห็น
ลบข้อคิดเห็นเกี่ยวกับรหัส
โค้ดของคุณควรตรงกับรายการต่อไปนี้:
string firstName = "Bob"; int widgetsPurchased = 7; Console.WriteLine($"{firstName} purchased {widgetsPurchased} widgets.");หากต้องการใช้บล็อกข้อคิดเห็นที่แสดงความคิดเห็นหลายบรรทัด ให้อัปเดตโค้ดของคุณดังนี้:
/* string firstName = "Bob"; int widgetsPurchased = 7; Console.WriteLine($"{firstName} purchased {widgetsPurchased} widgets."); */บล็อกความคิดเห็นเหมาะอย่างยิ่งหากคุณต้องการเขียนความคิดเห็นที่ยาวหรือลบรหัสหลายบรรทัด บล็อกข้อคิดเห็นใช้
/*ที่จุดเริ่มต้นของโค้ดและ*/ในตอนท้าย การใช้บล็อกข้อคิดเห็นเป็นวิธีที่ง่ายและรวดเร็วที่สุดในการปิดใช้งานโค้ดสามบรรทัดหรือมากกว่าแทนที่โค้ดที่มีอยู่ของคุณด้วยรายการต่อไปนี้:
Random random = new Random(); string[] orderIDs = new string[5]; // Loop through each blank orderID for (int i = 0; i < orderIDs.Length; i++) { // Get a random value that equates to ASCII letters A through E int prefixValue = random.Next(65, 70); // Convert the random value into a char, then a string string prefix = Convert.ToChar(prefixValue).ToString(); // Create a random number, pad with zeroes string suffix = random.Next(1, 1000).ToString("000"); // Combine the prefix and suffix together, then assign to current OrderID orderIDs[i] = prefix + suffix; } // Print out each orderID foreach (var orderID in orderIDs) { Console.WriteLine(orderID); }หมายเหตุ
มีแนวคิด C# มากมายในรายการโค้ดนี้ที่อาจยังใหม่สําหรับคุณ ไม่จําเป็นต้องเข้าใจว่าโค้ดกําลังทําอะไรเพื่อชื่นชมว่าความคิดเห็นสามารถช่วยให้ผู้อ่านเข้าใจวัตถุประสงค์ของโค้ดได้อย่างไร
ใช้เวลาสักครู่เพื่อดูว่าคุณสามารถค้นหาวัตถุประสงค์ของโค้ดได้หรือไม่
เมื่อระบุความคิดเห็นคุณอาจสามารถค้นหาได้ว่าโค้ดทําอะไร (สมมติว่าความคิดเห็นอธิบายสถานะปัจจุบันอย่างถูกต้องและได้รับการอัปเดตตามรหัสที่ได้รับการอัปเดต) แต่คุณสามารถเดาได้ว่าทําไมรหัสนี้ถึงมีอยู่? จะไม่เป็นประโยชน์ถ้ามีคําอธิบายบางอย่างที่ด้านบนของไฟล์โค้ดที่ให้บริบทบางอย่างและอธิบายวัตถุประสงค์หรือไม่
พิจารณาวิธีที่คุณจะปรับปรุงข้อคิดเห็น
โปรดสังเกตว่ามีปัญหาหลักสองประการเกี่ยวกับข้อคิดเห็นเหล่านี้:
- ความคิดเห็นรหัสไม่จําเป็นอธิบายฟังก์ชันการทํางานที่ชัดเจนของแต่ละบรรทัดของรหัส ซึ่งถือว่าเป็นข้อคิดเห็นที่มีคุณภาพต่ําเนื่องจากพวกเขาแค่อธิบายวิธีการทํางานของไลบรารีคลาส .NET# หรือ C# เท่านั้น หากผู้อ่านไม่คุ้นเคยกับแนวคิดเหล่านี้ พวกเขาสามารถค้นหาแนวคิดเหล่านี้ได้โดยใช้ learn.microsoft.com หรือ IntelliSense
- ความคิดเห็นรหัสไม่ได้ให้บริบทใด ๆ กับปัญหาที่ได้รับการแก้ไขโดยรหัส สิ่งเหล่านี้ถือว่าเป็นความคิดเห็นที่มีคุณภาพต่ําเนื่องจากผู้อ่านไม่ได้รับข้อมูลเชิงลึกใด ๆ เกี่ยวกับวัตถุประสงค์ของโค้ดนี้โดยเฉพาะอย่างยิ่งเนื่องจากเกี่ยวข้องกับระบบที่ใหญ่กว่า
ลบข้อคิดเห็นที่มีอยู่
โค้ดของคุณควรตรงกับรายการต่อไปนี้:
Random random = new Random(); string[] orderIDs = new string[5]; for (int i = 0; i < orderIDs.Length; i++) { int prefixValue = random.Next(65, 70); string prefix = Convert.ToChar(prefixValue).ToString(); string suffix = random.Next(1, 1000).ToString("000"); orderIDs[i] = prefix + suffix; } foreach (var orderID in orderIDs) { Console.WriteLine(orderID); }โปรดสังเกตว่าโค้ดไม่เป็นระเบียบน้อยลงแล้ว
หากต้องการเพิ่มความคิดเห็นที่อธิบายวัตถุประสงค์ระดับที่สูงกว่าของโค้ดให้อัปเดตโค้ดของคุณดังนี้:
/* The following code creates five random OrderIDs to test the fraud detection process. OrderIDs consist of a letter from A to E, and a three digit number. Ex. A123. */ Random random = new Random(); string[] orderIDs = new string[5]; for (int i = 0; i < orderIDs.Length; i++) { int prefixValue = random.Next(65, 70); string prefix = Convert.ToChar(prefixValue).ToString(); string suffix = random.Next(1, 1000).ToString("000"); orderIDs[i] = prefix + suffix; } foreach (var orderID in orderIDs) { Console.WriteLine(orderID); }ประโยชน์ของข้อคิดเห็นเป็นแบบอัตนัย ในทุกๆ เรื่องที่เกี่ยวข้องกับความสามารถในการอ่านโค้ด คุณควรใช้การตัดสินที่ดีที่สุดของคุณ ทําสิ่งที่คุณคิดว่าดีที่สุดเพื่อปรับปรุงความชัดเจนของโค้ดของคุณ
สรุป
ประเด็นหลักจากแบบฝึกหัดนี้:
- ใช้ความคิดเห็นรหัสเพื่อฝากบันทึกย่อที่มีความหมายให้กับตัวคุณเองเกี่ยวกับปัญหาที่รหัสของคุณแก้ไข
- อย่าใช้ข้อคิดเห็นโค้ดที่อธิบายวิธีการทํางานของไลบรารีคลาส C# หรือ .NET
- ใช้ข้อคิดเห็นโค้ดเมื่อพยายามแก้ไขปัญหาชั่วคราวจนกว่าคุณจะพร้อมที่จะส่งไปยังโซลูชันโค้ดใหม่ ซึ่งจุดนั้นคุณสามารถลบโค้ดเก่าได้
- ไม่เชื่อถือข้อคิดเห็น ซึ่งอาจไม่แสดงสถานะปัจจุบันของโค้ดหลังจากการเปลี่ยนแปลงและการอัปเดตจํานวนมาก