Swift:
การปรับโครงสร้างโค้ด
วิธีทำ:
เรามาเริ่มกันด้วยตัวอย่าง Swift พื้นฐานที่เรามีโค้ดที่ซ้ำกัน:
func printUserDetails(firstName: String, lastName: String, age: Int) {
print("ชื่อ: \(firstName)")
print("นามสกุล: \(lastName)")
print("อายุ: \(age)")
}
func printUserJob(title: String, company: String) {
print("ตำแหน่งงาน: \(title)")
print("บริษัท: \(company)")
}
การปรับโครงสร้างใหม่นี้จะรวมถึงการสร้าง User
struct เพื่อครอบคลุมคุณลักษณะผู้ใช้และเพิ่มวิธีการพิมพ์รายละเอียด:
struct User {
let firstName: String
let lastName: String
let age: Int
let jobTitle: String
let company: String
func printDetails() {
print("ชื่อ: \(firstName)")
print("นามสกุล: \(lastName)")
print("อายุ: \(age)")
print("ตำแหน่งงาน: \(jobTitle)")
print("บริษัท: \(company)")
}
}
let user = User(firstName: "John", lastName: "Doe", age: 30, jobTitle: "นักพัฒนาซอฟต์แวร์", company: "Tech Solutions")
user.printDetails()
ตัวอย่างผลลัพธ์:
ชื่อ: John
นามสกุล: Doe
อายุ: 30
ตำแหน่งงาน: นักพัฒนาซอฟต์แวร์
บริษัท: Tech Solutions
ลงลึก
การปรับโครงสร้างใหม่มีรากฐานย้อนกลับไปในช่วงต้นของวิศวกรรมซอฟต์แวร์ แต่คำนี้ได้รับความนิยมในช่วงปลายทศวรรษ 1990 โดยเฉพาะผ่านหนังสือวิชาการชื่อดัง “Refactoring: Improving the Design of Existing Code” ของ Martin Fowler หนังสือได้กำหนดหลักการว่าโค้ดควรถูกทำความสะอาดในขั้นตอนเล็กๆ อย่างต่อเนื่อง ไม่ใช่รอจนถึงช่วงเวลาที่แยกต่างหาก
ทางเลือกอื่นสำหรับการปรับโครงสร้างใหม่ด้วยตนเอง รวมถึงเครื่องมืออัตโนมัติและ IDE (Integrated Development Environments) ที่สามารถช่วยตรวจจับโค้ดที่ซ้ำกัน แนะนำการทำให้เรียบง่าย และสร้างส่วนของโค้ดโดยอัตโนมัติ Xcode สำหรับการพัฒนา Swift มีเครื่องมือปรับโครงสร้างใหม่หลายอย่าง เช่น ฟังก์ชันการเปลี่ยนชื่อและการดึงวิธีการออกมา ซึ่งสามารถลดศักยภาพของข้อผิดพลาดจากมนุษย์ในกระบวนการ
เมื่อพิจารณาการปรับโครงสร้างใหม่ สิ่งสำคัญคือต้องมีชุดทดสอบที่แข็งแกร่งเอาไว้ การทดสอบทำหน้าที่เป็นเครื่องป้องกัน เพื่อให้แน่ใจว่าการเปลี่ยนแปลงที่คุณกำลังทำไม่ได้นำเข้ามาซึ่งบั๊ก สิ่งนี้สำคัญเป็นพิเศษ เนื่องจากเป้าหมายหลักของการปรับโครงสร้างใหม่คือการเปลี่ยนโครงสร้างภายในโดยไม่ส่งผลกระทบต่อพฤติกรรมภายนอก