Forum: PC-Programmierung c code neu strukturieren


von Restrukturierer (Gast)


Lesenswert?

N Abend, Forum

Ich habe einen komplexeren c code. In ihm befinden sich if else Blöcke, 
die ziemlich lang sind, so lang, dass man beim else schon nicht mehr 
weiß, was beim if abgefragt wurde, weil man 300 Zeilen tiefer ist. Ich 
würde gerne den code in den if und else Blöcken verkürzen, auslagern o. 
was ähnliches, um ihn übersichtlicher zu machen. Der Code in den Blöcken 
ist aber sehr dicht, zahlreiche verschiedene Funktionaufrufe, 
verpointerte Structs als Funktionparameter. Es läßt sich kaum was in 
funktionen auslagern, ohne die vielen  structs als parameter mitzugeben.

Frage: habt Ihr Ideen wie man hier vorgehen könnte?

Danke für Vorschläge,
Restrukturierer

von TestX (Gast)


Lesenswert?

erstmal mit externen variablen arbeiten...dann weitersehen

von Dirk B. (dirkb2)


Lesenswert?

Restrukturierer schrieb:
> so lang, dass man beim else schon nicht mehr
> weiß, was beim if abgefragt wurde,

Dann schreib einen Kommentar beim else, wann das ausgeführt wird.

von Restrukturierer (Gast)


Lesenswert?

Danke an Euch für die ersten Ideen,
der TO

von Entwickler (Gast)


Lesenswert?

Restrukturierer schrieb:
> Frage: habt Ihr Ideen wie man hier vorgehen könnte?

Klein anfangen, und immer Mini-Schritt für Mini-Schritt. Ganz viele 
kleine Schritte führen zum Ziel.

In einem Mini-Schritt immer nur genau eine Sache ändern. Dazu gehört 
auch ganz besonders, dass schon einmal geänderter Code in einem späteren 
Schritt erneut umstrukturiert wird.

Auf keinem Fall versuchen, das alles auf einmal aufzuräumen. Das geht 
nicht, wie Du schon selbst gemerkt hast.

Immer nur eine Kleinigkeit ändern, das ist wirklich das allerwichtigste.


Dirk B. schrieb:
> Dann schreib einen Kommentar beim else, wann das ausgeführt wird.

Das kann ein Anfang sein, aber auf keinem Fall das Ende.

Wenn man eine fette Funktion hat, kann man die verschiedenen Bereiche in 
der Funktion mit einem Kommentar markieren.

Im nächsten Schritt werden die kommentierten Blöcke in eigene Funktionen 
gepackt. Der Funktionsname orientiert sich am ursprünglichem Kommentar.

In der Ursprungsfunktion werden die Kommentare gelöscht und durch 
Aufrufe der neuen Funktionen ersetzt.

So hat man schon mal eine Auftrennung in unterschiedlichen 
Abstraktionsebenen vollbracht.

Am Anfang bekommen diese Teil-Funktionen teilweise sehr viele Parameter, 
die vermutlich auch recht wenig miteinander zu tun haben. In weiteren 
Mini-Schritten wird auch dies Stückchen für Stückchen gerade gezogen.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Ich mache im if block nur den sprungverteiler und springe von dort in 
die (routinen)/funktionen.

Macht sich gut beim Restrukturieren von Spagetthicode.

Namaste

: Bearbeitet durch User
von Kaj (Gast)


Lesenswert?

Restrukturierer schrieb:
> Frage: habt Ihr Ideen wie man hier vorgehen könnte?

Clean Code koennte helfen:
https://www.amazon.de/Clean-Code-Refactoring-Patterns-Techniken/dp/3826655486

von Erik (Gast)


Lesenswert?

Beschaff dir eine GUI die Refactoring unterstützt.

Damit kannst du dann Codezeilen in Funktionen auslagern.
Gruppen von Bedingungen zu neuen Variablen zusammenfassen.
usw.

von A. S. (Gast)


Lesenswert?

Poste ein Beispielcode, ggf. mit anderer benamung. Dann kann ich dir 
zeigen, wie wir es machen.

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.