Forum: PC-Programmierung c code neu strukturieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Restrukturierer (Gast)


Bewertung
1 lesenswert
nicht 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)


Bewertung
-3 lesenswert
nicht lesenswert
erstmal mit externen variablen arbeiten...dann weitersehen

von Dirk B. (dirkb2)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Danke an Euch für die ersten Ideen,
der TO

von Entwickler (Gast)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (achs)


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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.