Dart:
การปรับโครงสร้างโค้ด
วิธีการ:
ตัวอย่างที่ 1: การเปลี่ยนชื่อและการสกัดวิธีการ
ก่อนการ refactor, คุณอาจมีโค้ดที่ผสมผสานระดับของการแสดงความคิดหรือความรับผิดชอบต่างๆ เช่น การคำนวณส่วนลดแล้วจึงใช้มัน:
void main() {
var price = 100.0;
var discount = 0.2;
var finalPrice = price - (price * discount);
print("Final price: $finalPrice");
}
ผลลัพธ์:
Final price: 80.0
หลังจากการ refactor, คุณสามารถสกัดการคำนวณส่วนลดออกมาเป็นวิธีการของตัวมันเองและตั้งชื่อที่มีความหมาย:
void main() {
var price = 100.0;
var discount = 0.2;
var finalPrice = calculateFinalPrice(price, discount);
print("Final price: $finalPrice");
}
double calculateFinalPrice(double price, double discount) {
return price - (price * discount);
}
ผลลัพธ์:
Final price: 80.0
โดยการสกัดการคำนวณออกมาเป็นวิธีการ คุณจะมีการดำเนินงานที่ได้รับการกำหนดอย่างชัดเจนซึ่งสามารถนำไปใช้ซ้ำ, ทดสอบได้อย่างอิสระ และมีการแก้ไขได้ง่าย
ตัวอย่างที่ 2: การทำให้เงื่อนไขง่ายขึ้น
ก่อนการ refactor, คำสั่งเงื่อนไขอาจซับซ้อนหรือยากต่อการอ่าน:
void main() {
var customerType = "regular";
double discount;
if (customerType == "regular") {
discount = 0.05;
} else if (customerType == "member") {
discount = 0.1;
} else {
discount = 0.0;
}
print("Discount: $discount");
}
ผลลัพธ์:
Discount: 0.05
หลังจากการ refactor, พิจารณาใช้แมพเพื่อโครงสร้างที่ชัดเจนและการอัปเดตหรือขยายประเภทของลูกค้าและส่วนลดง่ายขึ้น:
void main() {
var customerType = "regular";
var discounts = {
"regular": 0.05,
"member": 0.1,
"none": 0.0,
};
var discount = discounts[customerType] ?? 0.0;
print("Discount: $discount");
}
ผลลัพธ์:
Discount: 0.05
การ refactor นี้ไม่เพียงทำให้โค้ดกระชับมากขึ้น แต่ยังรวมเอาตรรกะสำหรับการกำหนดส่วนลดในวิธีที่เข้าใจและบำรุงรักษาได้ง่ายขึ้น
ไลบรารีของบุคคลที่สามสำหรับการ Refactor
เมื่อต้องการ refactor ใน Dart, โดยเฉพาะในแอป Flutter, Dart DevTools นั้นมีค่ายิ่ง ซึ่งรวมถึงเครื่องมือด้านประสิทธิภาพ, ตรวจสอบวิดเจ็ต, และดีบักเกอร์ระดับซอร์สโค้ด แม้ว่า Dart DevTools จะไม่ใช่ไลบรารีของบุคคลที่สาม, มักจะใช้ควบคู่ไปกับไลบรารีเช่น flutter_bloc
เพื่อการจัดการสถานะอย่างเรียบร้อยที่เอื้ออำนวยต่อการ refactor เพื่อปรับปรุงความโมดูลาร์และการอ่านได้ง่าย โชคร้ายที่ขอบเขตของบทความนี้ ตัวอย่างโค้ดโดยใช้ไลบรารีของบุคคลที่สามจะไม่ถูกนำเสนอที่นี่ แต่นักพัฒนาจูงใจให้สำรวจเครื่องมือเหล่านี้เพื่อเพิ่มการปรับปรุงกระบวนการ refactor ในแอป Dart/Flutter ของตน