Was ist der Vorteil, einen Code in mehrere kleine Funktionen in C ++ zu zerlegen? [geschlossen]

8

Dies ist nur eine allgemeine Hilfe Frage, ich versuche zu wissen Was ist der Vorteil einer Reihe von kleinen Funktionen in einer C ++ - Anwendung Code über eine lange komplexe Funktion mit allen Anweisungen zur Lösung eines Problems? / p>     

Mody 06.11.2012, 17:45
quelle

5 Antworten

19

Bearbeiten Die Gutschrift für dieses Kürzel geht an die Kommentatoren im OP.

Wenn Sie große Funktionen in mehrere kleinere aufteilen, kann dies zu MURDER führen! Was in diesem Fall eine gute Sache sein könnte. :)

  

M - Wartbarkeit Kleinere, einfachere Funktionen sind einfacher zu warten.

     

U - Verständlichkeit . Einfachere Funktionen sind leichter zu verstehen.

     

R - Wiederverwendbarkeit Ermutigt die Wiederverwendung von Code, indem gemeinsame Vorgänge in eine separate Funktion verschoben werden.

     

D - Debugfähigkeit . Es ist einfacher, einfache Funktionen zu debuggen als komplexe.

     

E - Erweiterbarkeit Code Wiederverwendung und Wartbarkeit führen zu Funktionen, die leichter in 6 Monaten umgestaltet werden können.

     

R - Regression . Wiederverwendung und Modularisierung führen zu effektiveren Regressionstests.

Es gibt einige mögliche Vorteile, um große Funktionen in kleinere Funktionen aufzuteilen. In der Reihenfolge fielen sie mir aus dem Kopf:

  1. Es fördert die Wiederverwendung von Code. Oft in großen Funktionen müssen Sie mehr oder weniger dasselbe oft tun. Indem Sie dies in einer einzigen allgemeinen Funktion verallgemeinern, können Sie diesen einen Codeblock an mehreren Stellen verwenden.

  2. Die Wiederverwendung von Code kann zur Robustheit und Wartbarkeit beitragen, indem potenzielle Fehler an einer Stelle statt an mehreren isoliert werden.

  3. Es ist einfacher, die Semantik der Funktion zu verstehen, wenn es weniger Codezeilen und eine Reihe von Aufrufen für gut benannte Funktionen gibt.

  4. Wenn Sie Funktionen mit mehreren Rückkehrpunkten ablehnen, kann das Brechen großer Funktionen dazu beitragen, diese zu reduzieren.

  5. Es hilft, (potenzielle) Probleme mit subtilen Datenabhängigkeiten zu identifizieren und zu isolieren, die sonst schwer zu bemerken sind.

Es ist jedoch wichtig zu beachten, dass Sie das Gute mit dem Schlechten nehmen. Es gibt auch einige mögliche Nachteile, um große Funktionen zu zerstören:

  1. Wenn die große Funktion zuvor funktioniert hat, kann der Versuch, sie zu modularisieren, zu Defekten führen.

  2. In Multithread-Anwendungen können Sie Deadlocks und Racebedingungen einführen, wenn Ihre Synchronisierungsrichtlinien subtil oder einfach falsch sind.

  3. Sie könnten einen Leistungseinbruch von den Funktionsaufrufen einführen.

John Dibling 06.11.2012, 17:55
quelle
3

Klarerer Code, was bedeutet, dass er einfacher zu verstehen und zu pflegen ist.

    
Igor 06.11.2012 17:47
quelle
0

Eine große komplexe Funktion ist nur das: komplex.

Durch die Aufteilung Ihres Codes in separate Funktionen wird die Arbeit mit Ihrem Code wesentlich erleichtert. Erstens, wenn Sie nach dem Teil des Codes suchen, der eine bestimmte Aufgabe ausführt, wird es einfacher zu finden sein, ob er in seiner eigenen Funktion ist.

Zweitens ist es viel einfacher, Änderungen an einer Funktion vorzunehmen, wenn es einfach ist - Sie müssen keine große Menge an Code verstehen, um diese Funktion zu ändern.

Außerdem ist es möglicherweise einfacher, diesen Code in einem anderen Projekt wiederzuverwenden, wenn er in kleinere Funktionen aufgeteilt wird, die wahrscheinlich für mehr Zwecke als nur die einzelne große Funktion verwendet werden können.

    
Jonathan Wood 06.11.2012 17:58
quelle
0

Die Vorteile der Aufteilung eines Programms in mehrere Funktionen sind:

  • Die meisten Programme haben einige grundlegende Funktionen, die an mehreren Stellen benötigt werden. Wenn diese Funktionalität in einer separaten Funktion enthalten ist, ist es offensichtlicher, wenn dieselbe Funktionalität verwendet wird, und Sie müssen auch nur einmal Probleme damit beheben.
  • Indem Sie ein Programm in Funktionen aufteilen, können Sie im Code mehrere Abstraktionsebenen einführen. In der Hauptfunktion erhalten Sie einen umfassenden Überblick darüber, was das Programm macht und jede Ebene in der Anrufliste zeigt mehr Details, wie bestimmte Aspekte realisiert werden.
Bart van Ingen Schenau 06.11.2012 18:06
quelle
0

Bei medizinischen Gerätesystemen reduziert das Aufteilen von Code in kleinere Teile die Notwendigkeit von Regressionstests und verringert die Auswirkungen von Änderungen auf einen kleineren Bereich.

Nehmen wir zum Beispiel an, wir haben 15 Funktionen für 3 Themen in einer Datei.

Wenn ich eine der Funktionen in der Datei ändere, muss alles neu erstellt und erneut getestet werden. Wenn ich die Datei in 3 separate Dateien mit jeweils 5 Funktionen aufteile, muss ich nur 5 Funktionen neu erstellen und 5 Funktionen erneut testen. Das Testen von 5 Funktionen erfordert weniger Testzeit als 15 Funktionen.

Wenn Gruppen von Personen an derselben Codebasis arbeiten, wird die Wahrscheinlichkeit, dass zwei oder mehr Personen an derselben Datei arbeiten, durch die Aufteilung des Codes verringert. Mehrere Personen, die an derselben Datei arbeiten, weisen viele Konflikte auf, z. B. dass der Code einer Person versehentlich beim Einchecken entfernt wird.

    
Thomas Matthews 06.11.2012 18:06
quelle

Tags und Links