Khi bạn có các đoạn mã thực sự nhỏ được lặp đi lặp lại nhiều lần trong chương trình điều khiển vi mô của bạn, tốt hơn là viết một phương thức? Tôi có nghĩa là tốt hơn về hiệu suất và sử dụng lưu trữ. Tôi biết rằng khi lập trình cho PC, việc lặp lại mã là một điều không nên, nhưng còn vi điều khiển thì sao?
Trong ví dụ sau (Arduino Nano với màn hình cảm ứng nắp 2,8 "Adaf nhung), đoạn mã sẽ xem nếu nút quay lại được nhấn trong một số màn hình. Tôi đã kiểm tra trong Arduino IDE mỗi bộ lưu trữ có bao nhiêu dung lượng:
Phiên bản 1, 15114 byte cho chương trình hoàn chỉnh:
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();
}
}
}
Phiên bản 2, 15234 Byte cho chương trình hoàn chỉnh:
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);
}
Như bạn có thể thấy, phiên bản 2 với phương thức bổ sung sẽ chiếm thêm 120 Byte. Có một quy tắc khi tạo ra một phương thức mới thay vì sao chép mã?