Hallo, Oft bietet es sich an in Funktionen mit Rückgabewert so vorzugehen int test() { ... if () return 1; else if () return -1; return 0; } oder int test() { int a = 0; if () a = 1 else if () a = -1 return a; } Welchen "Stil" sollte man bevorzugen. Hat einer der beiden einen Geschw. oder Speicherbedarf Vorteil? mfg
Da du im ersten Fall das else weglassen kannst if () return 1; if () return -1; return 0; wird der Compiler aus dem ersten Fall etwas kürzeres machen, obwohl kluge Compiler eigentlich beide Varianten zu demselben Code compilieren sollten.
Ich verwende auch öfter die Variante mit mehreren returns. Allerdings wirklich nur da, wo sie sinnvoll ist, D.h. wo man sich innerhalb von kritischen Funktionen Variablen oder Instruktionen spart. Ansonsten hat die single exit schreibweise 2 Vorteile: - Meiner Meinung macht sie den Code übersichtlicher. Ich hab schon ein paar mal ungläubig über Codezeilen geguckt und nichts verstanden, bis ich gemerkt habe, dass das ganze nur ein Spezialfall war und alle anderen Fälle schon vorher beendet wurden - Es macht es manchmal einfacher den Speicher aufzuräumen, und sicher zu gehen, dass alles was nötig ist wieder freigegeben wurde. Soweit ich weiss, wird das deshalb auch in manchen Guidelines für sicherheitskritischen Code vorgeschrieben (z.B. Automobilbereich) Die große Ausnahme, die ich fast immer anwende sind Sachen wie:
1 | uint8_t loadFile(char* filename, uint8_t data*){ |
2 | if(!filename) { |
3 | return 0; |
4 | }
|
5 | ...
|
6 | }
|
oder
1 | uint8_t ungaublichKomplizierteBildbearbeitung(uint8_t *a, uint8_t *b, uint16_t x, uint16_t y) { |
2 | uint16_t *temp = calloc(x*y, sizeof(uint16_t)); |
3 | if (temp == null) { |
4 | return 0 |
5 | }
|
6 | ...
|
7 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.