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:

จำไว้ว่า เป้าหมายคือโค้ดที่สะอาดและเข้าใจง่ายสำหรับคุณในอนาคตและผู้อื่น จะได้ขอบคุณคุณ ขอให้คุณเก่งในการแฮ็ก และรักษาความเป็นระเบียบ!