Forum: Mikrocontroller und Digitale Elektronik Coding Style für µC Programmierung in C


von Strahlex (Gast)


Lesenswert?

Hallo Leute,

Ich bin gerade am überlegen wie ich Funktions und Variablennamen in 
meinem Code am besten gestalte. Ich habe bereits viel Erfahrung in der 
Desktop Programmierung mit Qt und mich bis jetzt auch an die Coding 
Conventions gehalten. Das Problem: C-Code kann man leider nicht 100% 
gleich bennen wie C++ Code. Deshalb habe ich ein paar Ideen gesammelt:

"Normaler" C Style:
1
delay_ms();
2
timer_init();
3
timer_set_clk();

Meiner Meinung nach ziemlich hässlich und unpraktisch.

CamelCase:
1
delayMs();
2
timerInitialize() oder initializeTimer()?
3
timerSetClock() oder setTimerClock()?

So hab ichs bisher gemacht. Man kommt aber schnell drauf das man 
Funktionen im rechten Style schwer findet und im Linken wirds 
unleserlich.

Hybrid Style:
1
delayMs();
2
Timer_initialize();
3
Timer_setClock();

Kommt schon sehr nahe an den Qt-Style heran (Timer::initialize()). 
Globale Funktionen mit <Bibliotheknamen>_ und privates ganz Normal.


So jetzt meine Frage, wie "Styled" ihr euren Code?

von Sauger (Gast)


Lesenswert?

Mabend,

Strahlex schrieb:
> So jetzt meine Frage, wie "Styled" ihr euren Code?

aussagekräftig, Geschmacksache zählt nicht.

MfG

von Lukas K. (carrotindustries)


Lesenswert?

Strahlex schrieb:
> So jetzt meine Frage, wie "Styled" ihr euren Code?

Wie in deinem ersten Beispiel. Was daran hässlich und unpraktisch sein 
soll, mag sich mir nicht erschließen.

von Stefan W. (swessels)


Lesenswert?

So, das ich ihn lesen kann ;-)

Ich denke jeder macht das so wie er am besten damit klar kommt. Ich zum 
Beispiel so:

1
#ifdef MSB
2
void sr_byte_out(uint8_t byte)
3
{
4
  uint8_t i;
5
  for (i = 0; i < 8; i++)
6
  {
7
    if(byte & 0x80) SD_HI();
8
    SCL_HI();
9
    SR_DELAY();
10
    SCL_LO();
11
    SD_LO();
12
    byte <<= 1;
13
  }
14
}
15
#else
16
void sr_byte_out(uint8_t byte)
17
{
18
  uint8_t i;
19
  for (i = 0; i < 8; i++)
20
  {
21
    if(byte & 0x01) SD_HI();
22
    SCL_HI();
23
    SR_DELAY();
24
    SCL_LO();
25
    SD_LO();
26
    byte >>= 1;
27
    
28
  }
29
}
30
#endif //MSB

Gruß,
Stefan

von Rolf M. (rmagnus)


Lesenswert?

Strahlex schrieb:
> "Normaler" C Style:delay_ms();
> timer_init();
> timer_set_clk();
> Meiner Meinung nach ziemlich hässlich und unpraktisch.

Warum unpraktisch? Ob er hässlich ist oder nicht, ist zu 100% 
subjektives Empfinden. Also mach es so, wie du es "schöner" findest, 
wenn dir kein objektives Kriterium für das eine oder andere einfällt.

> CamelCase:
> delayMs();
> timerInitialize() oder initializeTimer()?
> timerSetClock() oder setTimerClock()?
> So hab ichs bisher gemacht. Man kommt aber schnell drauf das man
> Funktionen im rechten Style schwer findet und im Linken wirds
> unleserlich.

Was ist daran unleserlich? Ich statte die Funktionen immer mit einem 
Präfix aus, der das Modul benennt, zu dem sie gehören. Also fangen alle 
Funktionen, die sich um den Timer kümmern, eben mit "timer_" an.

Sauger schrieb:
> Mabend,
>
> Strahlex schrieb:
>> So jetzt meine Frage, wie "Styled" ihr euren Code?
>
> aussagekräftig, Geschmacksache zählt nicht.

Das meiste davon ist aber nun mal Geschmackssache. Auch was 
aussagekräftig ist und was nicht, hängt oft vom persönlichen Geschmack 
ab.

von Karol B. (johnpatcher)


Lesenswert?

Das geht doch sehr in die gleiche Richtung wie dieser Thread: 
Beitrag "Wie setzt ihr Klammern?"

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
Noch kein Account? Hier anmelden.