Arduino:
Refaktorering

Hvordan:

La oss si du har en funksjon på din Arduino som gjør altfor mye, slik som dette:

void setup() {
  Serial.begin(9600);
}

void loop() {
  // En funksjon som gjør for mye
  handleEverything();
}

void handleEverything() {
  // Les sensordata
  int sensorValue = analogRead(A0);
  // Behandle sensordata
  sensorValue = map(sensorValue, 0, 1023, 0, 255);
  // Skriv ut sensordata
  Serial.println(sensorValue);
  delay(500);
}

Å refaktorere det, kan se ut som å splitte handleEverything() inn i mindre, mer fokuserte funksjoner:

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);
}

Etter refaktoreringen er loop() funksjonen mer lesbar, og hver oppgave håndteres av en dedikert funksjon, noe som gjør koden enklere å administrere.

Dypdykk

Historisk sett ble refaktorering populært med oppgangen til Agile og testdrevet utvikling (TDD) metodologier, som stoler på konstant kodeforbedring for å tilpasse seg endrende krav. Det finnes ulike verktøy og strategier for refaktorering – som “Extract Method”-teknikken vi brukte i vårt Arduino-eksempel. Dette er essensielt når du går fra en rask prototype til et stabilt prosjekt, der kodelesbarhet og vedlikehold blir avgjørende.

Når du refaktorerer, er det viktig å ha et godt sett med tester på plass for å sikre at endringene ikke har introdusert noen feil. I Arduino-verdenen er ikke automatisert testing alltid rett frem på grunn av maskinvareavhengighetene, men du kan fortsatt bruke enhetstesting for rene logikkbiter eller benytte simulatorer.

Alternativer til manuell refaktorering inkluderer å bruke dedikerte refaktoriseringsverktøy, som automatiserer identifiseringen av kode tvil og foreslår endringer. Imidlertid mangler disse verktøyene ofte nyansene for mikrokontrollerkode og er kanskje ikke tilgjengelige i Arduino-utviklingsmiljøet.

Til slutt er refaktorering en kunst som balanserer forbedring av kodenens interne struktur mot risikoen for å innføre feil. Det krever at du tenker over implementeringsdetaljer som minnebruk og prosessortid, spesielt på grunn av mikrokontrollernes ressursbegrensede natur.

Se også

Du kan dykke dypere inn i refaktorering med Martin Fowlers grunnleggende bok Refactoring: Improving the Design of Existing Code. For et nærmere blikk på Arduino-spesifikke praksiser, sjekk ut Arduino-utviklingsforumer og -fellesskap:

Husk, målet er ren, forståelig kode som fremtidige du og andre vil takke deg for. Fortsett å hacke, og hold det ryddig!