Schöner Quelltext (aber wie?)

Gast #1844752
Lesenswert?

Hallo,
ich bastle gerade an einem immer größer werdenden Projekt und langsam 
wird der Code unübersichtlich.
Leider bin ich nur ein "Hobby"-C Programmierer, und nun hab ich (nicht 
erfolgreich) nach einer Seite gesucht, auf der so die Basics eines 
schönen Quelltexts erklärt sind. Also kein Tutorial "wie lerne ich 
programmieren", das kann ich schon. Mir fehlt bloß der optische 
Feinschliff, der ggf auch noch ein Performance verbessert.
So was wie: "Was gehört in eine *.h, was in eine *.c" etc...

Kennt da wer was oder hat da wer Tipps?

MfG
Persönliche Seite #1845256
Lesenswert?

StarkStrom schrieb:
> Hallo,
> ich bastle gerade an einem immer größer werdenden Projekt und langsam
> wird der Code unübersichtlich.
> Leider bin ich nur ein "Hobby"-C Programmierer, und nun hab ich (nicht
> erfolgreich) nach einer Seite gesucht, auf der so die Basics eines
> schönen Quelltexts erklärt sind. Also kein Tutorial "wie lerne ich
> programmieren", das kann ich schon. Mir fehlt bloß der _optische_
> Feinschliff

Wenn ich fremden, 'unattraktiven' Code übernehme, dann lasse ich die 
auto format - Funktion von Eclipse darauf los. Vielleicht hilft es dir 
ja zu schauen, was Eclipse per default aus deinem Code macht? Du kannst 
dort auch zwischen verschiedenen Coding Styles umschalten.


> , der ggf auch noch ein Performance verbessert.

Ein guter Coding Style erhöht die Performance des Programmiers :-)


> So was wie: "Was gehört in eine *.h, was in eine *.c" etc...

Hmmm, vielleicht solltest du doch lieber ein C-Tutorial lesen? :-)


Schöne Grüße
Jens
#1845411
Lesenswert?

Jens Wirth schrieb:
>> , der ggf auch noch ein Performance verbessert.
>
> Ein guter Coding Style erhöht die Performance des Programmiers :-)

Dazugehört aber nicht das schön Formatieren, das bewirkt genau 0,nix.
Sondern das Durchdenken des Projekts und das Aufteilen in möglichst 
kleine mehrfach verwendbare Module.
Von der CPU-Performance gesehen ist das ein kleiner Rückschritt, die 
dann nötigen Calls machen das Programm ein bischen langsamer gegenüber 
Spaghetticode.
Aber von der Verstehbarkeit, Wartbarkeit, Erweiterbarkeit und 
Fehlersicherheit ist es dafür ein gewaltiger Fortschritt.

Z.B. sieht man fast immer LDC-Libs, wo die Nibble-Funktion an mindestens 
6 Stellen hart reincodiert ist. Will nun ein Anfänger die Pinbelegung 
ändern, kriegt er graue Haare darüber oder schmeißt den ganzen Krempel 
in die Ecke.
Hätte man aber nur eine Nibble-Funktion, die 6-mal aufgerufen wird, wäre 
das Pinändern ein Klacks.


Peter
#1845435
Lesenswert?

Peter Dannegger schrieb:
> Jens Wirth schrieb:
>>> , der ggf auch noch ein Performance verbessert.
>>
>> Ein guter Coding Style erhöht die Performance des Programmiers :-)
>
> Dazugehört aber nicht das schön Formatieren, das bewirkt genau 0,nix.

0,nix würde ich nicht sagen.
Das was du (und ich) bei unseren eigenen Programmen als hingeschludert 
bezeichnen würdest ist immer noch meilenweit davon entfernt, was man 
hier im Forum so manches mal zu Gesicht bekommt.

Wir sind zb daran gewöhnt, automatisch einzurücken. Da denkt keiner mehr 
darüber nach. Einem Neuling musst du erst aber mal beibringen, dass 
solche Kleinigkeiten wichtig sind. Und zwar nicht im Nachhinein sondern 
sofort.
Keine Buchstabenwürste vom linken bis zum rechten Rand nur weil das in C 
prinzipiell möglich ist, sondern den Code auch optisch in Einzelteile 
aufteilen.
Keine Unmengen von Leerzeilen zwischen den Anweisungen, die den Code nur 
unnötig in die Länge ziehen.

Du machst das nicht und ich mach das nicht.
Aber Neulinge tun das.

> Sondern das Durchdenken des Projekts und das Aufteilen in möglichst
> kleine mehrfach verwendbare Module.

Das sowieso.
Persönliche Seite #1846344
Lesenswert?

StinkyWinky schrieb:
> Wichtig ist, seinen Stil konsequent durch zu ziehen. Dann fällt es
> einem leichter, den Code zu erfassen.

Das ist korrekt. Wenn man einen Fremden Code liest und sich kurz an 
dessen Notation gewöhnt hat, ist es einfacher den Rest zu lesen.

Beim Code nachvollziehen (sei es fremder, oder alter Code) geht es nicht 
darum, den Code bloß zu lesen, sondern auch zu interpretieren.
Sprich: Zeilen wie
1
for (i=0; i<ARRAY_MAX; i++)
2
{
3
...
4
}
kann man sofort interpretieren als "Ah, er iteriert über das Array" ohne 
großartig viel lesen zu müssen.
#1846765
Lesenswert?

Die Basics eines "schönen Quelltextes" findest Du im Duden. Insbesondere 
die Hinweise zum Maschine-Schreiben liefern viele Regeln, die die 
Lesbarkeit von Texten erheblich erhöhen.

Mein Vorredner hat praktischerweise ein Beispiel eingebracht, wie man es 
nicht tun sollte (die mathematischen Zeichen werden "unsichtbar"):

Simon K. schrieb:
> for (i=0; i<ARRAY_MAX; i++)
> {
> ...
> }

Lesbarer sieht das Ganze folgendermaßen aus:

for (i = 0; i < ARRAY_MAX; i++)
{
...
}

Ansonsten:
Lies fremden Code und achte auf Lesbarkeit und Verständlichkeit.
Üernimm, was Du für verständlichkeits-fördernd hältst.

Bernhard
Persönliche Seite #1847628
Lesenswert?

Bernhard R. schrieb:
> Mein Vorredner hat praktischerweise ein Beispiel eingebracht, wie man es
> nicht tun sollte (die mathematischen Zeichen werden "unsichtbar"):
Tja, so unterscheiden sich die Geschmäcker ;-)

> Simon K. schrieb:
>> for (i=0; i<ARRAY_MAX; i++)
>> {
>> ...
>> }
>
> Lesbarer sieht das Ganze folgendermaßen aus:
>
> for (i = 0; i < ARRAY_MAX; i++)
> {
> ...
> }

Finde ich nicht, man sieht die Gliederung der einzelnen for-Bestandteile 
nicht mehr so gut. Kann mich aber auf beide Möglichkeiten ohne 
Gewissensbisse einlassen.
Gibt ja noch viel schlimmere Beispiele. Zum Beispiel fette IF-Abfragen, 
wo kein einziges Leerzeichen drin ist, da hast du natürlich schon Recht 
dann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren