Wenn Sie wirklich kleine Codeausschnitte haben, die in Ihrem Mikrocontroller-Programm mehrmals wiederholt werden, ist es besser, eine Methode zu schreiben? Ich meine besser in Bezug auf Leistung und Speichernutzung. Ich weiß, dass bei der Programmierung für den PC die Codewiederholung ein großes Problem ist, aber was ist mit Mikrocontrollern?
Im folgenden Beispiel (Arduino Nano mit Adafruit 2,8 "Cap Touch Display) sollte das Snippet aussehen, wenn die Zurück-Taste auf mehreren Bildschirmen gedrückt wird. Ich habe in der Arduino IDE überprüft, wie viel Speicherplatz jede Version benötigt:
Version 1, 15114 Bytes für komplettes Programm:
void battScreen(TS_Point p){
// some other code
// ....
if ((p.x > backBox.posx) && (p.x < backBox.posx + backBox.sidex)){
if((p.y > backBox.posy) && (p.y < backBox.posy + backBox.sidey)){
screen = MAIN1;
showMainScreen();
}
}
}
void alarmScreen(TS_Point p){
// some other code
//...
if ((p.x > backBox.posx) && (p.x < backBox.posx + backBox.sidex)){
if((p.y > backBox.posy) && (p.y < backBox.posy + backBox.sidey)){
screen = MAIN1;
showMainScreen();
}
}
}
void pumpScreen(TS_Point p){
// some other code
// ...
if ((p.x > backBox.posx) && (p.x < backBox.posx + backBox.sidex)){
if((p.y > backBox.posy) && (p.y < backBox.posy + backBox.sidey)){
screen = MAIN1;
showMainScreen();
}
}
}
Version 2, 15234 Bytes für komplettes Programm:
void checkBack(TS_Point p){
if ((p.x > backBox.posx) && (p.x < backBox.posx + backBox.sidex)){
if((p.y > backBox.posy) && (p.y < backBox.posy + backBox.sidey)){
screen = MAIN1;
showMainScreen();
}
}
}
void battScreen(TS_Point p){
// some other code
// ...
checkBack(p);
}
void alarmScreen(TS_Point p){
// some other code
// ...
checkBack(p);
}
void pumpScreen(TS_Point p){
// some other code
// ...
checkBack(p);
}
Wie Sie sehen können, benötigt Version 2 mit der zusätzlichen Methode 120 Byte mehr Speicherplatz. Gibt es eine Faustregel, wenn es sinnvoll ist, eine neue Methode zu erstellen, anstatt Code zu kopieren?