Arduino:
การปรับโครงสร้างโค้ด
วิธีการ:
สมมติว่าคุณมีฟังก์ชันใน Arduino ของคุณที่ทำงานมากเกินไป เช่นนี้:
void setup() {
Serial.begin(9600);
}
void loop() {
// ฟังก์ชันที่ทำงานมากเกินไป
handleEverything();
}
void handleEverything() {
// อ่านข้อมูลเซ็นเซอร์
int sensorValue = analogRead(A0);
// ประมวลผลข้อมูลเซ็นเซอร์
sensorValue = map(sensorValue, 0, 1023, 0, 255);
// พิมพ์ข้อมูลเซ็นเซอร์
Serial.println(sensorValue);
delay(500);
}
การรีแฟคเตอริงอาจจะดูเหมือนการแบ่ง handleEverything()
ออกเป็นฟังก์ชันที่เล็กและมุ่งเน้นมากขึ้น:
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = readSensorData();
int processedValue = processSensorData(sensorValue);
printData(processedValue);
delay(500);
}
int readSensorData() {
return analogRead(A0);
}
int processSensorData(int sensorValue) {
return map(sensorValue, 0, 1023, 0, 255);
}
void printData(int data) {
Serial.println(data);
}
หลังจากรีแฟคเตอริง ฟังก์ชัน loop()
ประกอบด้วยโค้ดที่อ่านง่ายขึ้นและแต่ละงานถูกจัดการโดยฟังก์ชันที่เฉพาะเจาะจง ทำให้โค้ดง่ายต่อการจัดการมากขึ้น
การลงลึก
ในประวัติศาสตร์การพัฒนาซอฟต์แวร์ การรีแฟคเตอริงได้รับความนิยมพร้อมกับการเกิดขึ้นของวิธีการ Agile และ Test-Driven Development (TDD) ที่พึ่งพาการปรับปรุงโค้ดอย่างต่อเนื่องเพื่อปรับตัวให้เข้ากับความต้องการที่เปลี่ยนแปลงไป มีเครื่องมือและกลยุทธ์ต่างๆ สำหรับการรีแฟคเตอริง—เช่นเทคนิค “Extract Method” ที่เราใช้ในตัวอย่าง Arduino ของเรา สิ่งนี้มีความสำคัญเมื่อคุณกำลังย้ายจากต้นแบบที่เร็วไปสู่โครงการที่เสถียร ที่โค้ดควรอ่านได้ง่ายและจัดการได้ดี
เมื่อทำการรีแฟคเตอริง ก็สำคัญที่จะต้องมีชุดการทดสอบที่ดีเพื่อให้มั่นใจว่าการเปลี่ยนแปลงไม่ได้นำบั๊กมาด้วย ในโลกของ Arduino การทดสอบโดยอัตโนมัติอาจไม่เป็นไปอย่างราบรื่นเสมอไปเนื่องจากข้อจำกัดของฮาร์ดแวร์ แต่คุณยังสามารถใช้การทดสอบหน่วยสำหรับส่วนที่เป็นตรรกะหรือใช้ซิมูเลเตอร์
ทางเลือกอื่นๆ ที่ไม่ต้องทำด้วยตนเองรวมถึงการใช้เครื่องมือรีแฟคเตอริงที่เฉพาะเจาะจง ซึ่งช่วยในการระบุ “กลิ่น” ของโค้ดและแนะนำการเปลี่ยนแปลง อย่างไรก็ตาม เครื่องมือเหล่านี้บางครั้งอาจไม่เข้าถึงลักษณะเฉพาะของโค้ดสำหรับไมโครคอนโทรลเลอร์และอาจไม่มีให้ในสภาพแวดล้อมการพัฒนาของ Arduino
ในที่สุด การรีแฟคเตอริงเป็นศาสตร์ที่ควบคุมสมดุลระหว่างการปรับปรุงโครงสร้างภายในของโค้ดกับความเสี่ยงที่จะนำเสนอข้อบกพร่อง สิ่งนี้ต้องการให้คุณคิดเกี่ยวกับรายละเอียดการประยุกต์ใช้ เช่น การใช้หน่วยความจำและเวลาประมวลผล โดยเฉพาะอย่างยิ่งเนื่องจากธรรมชาติทรัพยากรจำกัดของไมโครคอนโทรลเลอร์
ดูเพิ่มเติม
คุณสามารถลงลึกเกี่ยวกับการรีแฟคเตอริงได้มากขึ้นกับหนังสือเรือธงของ Martin Fowler Refactoring: Improving the Design of Existing Code สำหรับการดูที่ใกล้ชิดกว่าเกี่ยวกับการปฏิบัติที่เฉพาะเจาะจงของ Arduino ตรวจสอบฟอรั่มและชุมชนการพัฒนาของ Arduino:
จำไว้ว่า เป้าหมายคือโค้ดที่สะอาดและเข้าใจง่ายสำหรับคุณในอนาคตและผู้อื่น จะได้ขอบคุณคุณ ขอให้คุณเก่งในการแฮ็ก และรักษาความเป็นระเบียบ!