C#:
การปรับโครงสร้างโค้ด
วิธีทำ:
มาปรับโครงสร้างเมทอดง่ายๆใน C# ที่คำนวณและพิมพ์ผลรวมของอาร์เรย์ของตัวเลขกัน:
ก่อนปรับโครงสร้าง:
public class Calculator
{
public void CalculateSum()
{
int[] numbers = { 1, 2, 3, 4, 5 };
int sum = 0;
for (int i = 0; i < numbers.Length; i++)
{
sum += numbers[i];
}
Console.WriteLine("The sum is " + sum);
}
}
หลังจากปรับโครงสร้าง:
public class Calculator
{
private readonly int[] _numbers;
public Calculator(int[] numbers)
{
_numbers = numbers;
}
public int CalculateSum()
{
return _numbers.Sum();
}
public void DisplaySum()
{
Console.WriteLine($"The sum is {CalculateSum()}");
}
}
// การใช้งาน:
var calculator = new Calculator(new[] { 1, 2, 3, 4, 5 });
calculator.DisplaySum();
ด้วยการปรับโครงสร้าง, เราได้แยกกังวลออกจากกัน, ทำให้คลาส Calculator
มีความยืดหยุ่นมากขึ้นโดยอนุญาตให้รับอาร์เรย์ของตัวเลขใดๆ, และใช้ประโยชน์จาก LINQ เพื่อทำให้การคำนวณผลรวมง่ายขึ้น
การศึกษาลึก
การปรับโครงสร้างมีรากฐานมาจากชุมชนโปรแกรมเมอร์ตัวเล็ก (smalltalk) และได้รับความนิยมในช่วงทศวรรษที่ 1990 โดยหนังสือ “Refactoring: Improving the Design of Existing Code” ของมาร์ติน ฟาวเลอร์ ตลอดหลายปีที่ผ่านมา, มันได้กลายเป็นส่วนหนึ่งของวิธีการ agile และปฏิบัติการเขียนโค้ดที่ดี
มีวิธีการปรับโครงสร้างที่หลากหลาย, เช่น Red-Green-Refactor ใน Test-Driven Development (TDD) ประกันว่าการปรับโครงสร้างจะไม่นำเข้าบั๊กด้วยการเริ่มต้นด้วยการทดสอบที่ล้มเหลว, ทำให้มันผ่าน, แล้วทำความสะอาดโค้ด
เมื่อดำเนินการปรับโครงสร้าง, สิ่งสำคัญคือต้องมีชุดการทดสอบที่ครอบคลุมเพื่อให้แน่ใจว่าไม่มีการทำลายฟังก์ชันการทำงานระหว่างกระบวนการ โปรแกรมช่วยการปรับโครงสร้างอัตโนมัติ, เช่น ReSharper สำหรับ C#, ก็สามารถช่วยในกระบวนการนี้ได้โดยการให้วิธีที่ปลอดภัยในการเปลี่ยนโครงสร้างของโค้ด อย่างไรก็ตาม, เครื่องมือควรเป็นเพียงส่วนเสริมกับความเข้าใจอย่างลึกซึ้งเกี่ยวกับฐานโค้ดและหลักการเขียนโค้ด
ดูเพิ่มเติม
- งานชิ้นสำคัญของมาร์ติน ฟาวเลอร์เกี่ยวกับการปรับโครงสร้าง: Refactoring: Improving the Design of Existing Code
- คู่มือของไมโครซอฟต์เกี่ยวกับการปรับโครงสร้างใน Visual Studio: Refactoring (C#)
- การศึกษาอย่างละเอียดเกี่ยวกับรูปแบบการปรับโครงสร้างพร้อมตัวอย่าง: SourceMaking Refactoring