Das geht so in Ordnung, wenn ihr alle so programmiert.
Bei dieser Funktion wäre es mit einem Austrittspunkt aber
übersichtlicher.
Da Du z.B. mit geschweiften klammern "{}" sehr sparsam bist, nehme ich,
dass Du nicht mit Lint oder Compiler-Warnungen arbeitest. Daher wird es
auch kaum jemanden interessieren (also kein Peer-Review, Misra, ...)
1 | uint8_t CheckValidFrequency ( void )
|
2 | {
|
3 | static uint8_t GridErrorCounter = 0;
|
4 | uint8_t ret;
|
5 |
|
6 | if( Frequency.ist > ISLAND_GD_FREQUENCY_MIN
|
7 | && Frequency.ist < ISLAND_GD_FREQUENCY_MAX)
|
8 | {
|
9 | GridErrorCounter = 0;
|
10 | ret = GD_OK;
|
11 | }
|
12 | else
|
13 | {
|
14 | /* Set "!" to Display to show that a grid error accoured */
|
15 | Flags.GridErrorDisplay = GD_ERROR_LCD_TIME;
|
16 | /* Grid Error, but count before acting */
|
17 | if(GridErrorCounter < GD_ERROR_COUNT_MAX)
|
18 | {
|
19 | GridErrorCounter++;
|
20 | ret = GD_OK;
|
21 | }
|
22 | else
|
23 | {
|
24 | ret = GD_ERROR;
|
25 | }
|
26 | }
|
27 | return ret;
|
28 | }
|
Das explizite Setzen von ret in jedem Pfad erlaubt es statischen
Analysetools festzustellen, ob man ein bewusstes setzen vergessen hat.
Mit GD_OK als Default entfielen 2 Zeilen.
Nochmal: Ich habe nichts gegen mehrere Austrittspunkte. Zumal es
Anwendungen gibt, die Code und Schachteltiefe enorm reduzieren. Das ist
aber hier nicht der Fall.