.... und wenn du das dann auch noch vernünftig machen willst, dann
benutzt du von vorne herein gleich Namen, die die Funktion der LED
wiederspiegeln (egal ob du das jetzt mit PeDas Lösung machst oder die
reine Makrolösung bevorzugst.)
Denn dann steht im Code beispielsweise
1 | ...
|
2 | LED_ON( ERROR_LED );
|
3 | LED_OFF( READY_LED );
|
4 | ...
|
und das dokumentiert im Code selber schon viel besser, was der Zweck des
Code-Stückes ist. Nämlich in diesem Fall dem Benutzer das Auftreten
eines Fehlers durch Aufleuchten der mit 'Error' beschrifteten LED
anzuzeigen.
Das diese LED natürlich an irgendeinem Portpin hängen muss, ist klar.
Aber diese Information gibt es nur an einer einzigen Stelle im Programm
zusammengefasst. Nämlich hier
1 | #define ERROR_LED PE2
|
2 | #define READY_LED PE4
|
Dem restlichen Programmtext ist das piepschnurzegal, ob eine spezielle
LED nun an PE2 oder doch an PE0 hängt. Diese Begriffe kommen im Programm
selber nicht mehr vor, sondern nur noch ihre durch #define eingeführten
Ersatznamen. Das ist zum einen in der Tradition des 'Code sollte nach
Möglichkeit selbstkommentierend sein' und zum anderen ist es eine große
Hilfe, wenn die LED (am selben Port) auf einen anderen Pin 'umziehen'
muss. Dann ändert man einfach nur dieses eine #define und hat diese
Anpassung erledigt.
> ... aber das verstehe ich jetzt überhaupt nicht,
> wozu LED definieren? ....
> ...
> ... Im Kommentar steht nur wie es jetzt gerade ist
genau das ist der Zweck: Den Kommentar komplett überflüssig zu machen.
Denn dann kann man ihn weglassen ohne dass das Programm weniger schlecht
zu lesen wäre. Das Weglassen können ist wiederrum etwas gutes. Denn ein
Kommentar, der nicht dasteht, kann auch nicht falsch sein. Wenn du die
Wahl hast, zwischen
1 | PORTE |= ( 1 << PE2 ); // Error LED einschalten
|
und
dann ist zweites zu bevorzugen. Denn hier steht bereits im Code das, was
sonst mühsam (und fehlerträchtig) kommentiert werden müsste. Im Code
steht das, was tatsächlich passiert. Denn ob der Kommentar korrekt ist
oder nicht hängt ganz allein lediglich von deiner Disziplin ab, jegliche
Codeänderungen auch auf den Kommentar auszudehen.