Wie viele Codezeilen können in einer C++ - Funktion enthalten sein? Gibt es eine Grenze? Ich benutze MSVS 2013. Meine Hauptfunktion ist riesig.Wie viele Codezeilen in einer C++ - Funktion enthalten sein können
Antwort
Es sind keine Grenzen gesetzt, aber die Wartungsfreundlichkeit wird bei maximal 30 Zeilen berücksichtigt. Sollte wenn möglich verwendet werden.
Es gibt keine Obergrenze, wie viele Codezeilen Ihre Methode haben sollte. Aber Sie müssen sicherstellen, dass Ihre Funktion nur eine Sache macht.
Vom book:
Von Zeit zu Zeit, ein komplexer Algorithmus zu einer längeren Routine führen, und unter diesen Umständen sollte die Routine erlaubt seine organisch bis zu 100-200 Linien zu wachsen . (Eine Zeile ist eine noncomment, nonblank Zeile des Quellcodes.) Jahrzehnte der Beweise sagen, dass Routinen von solchen Länge sind nicht fehleranfälliger als kürzere Routinen. Lassen Sie Probleme wie als Tiefe der Verschachtelung, Anzahl der Variablen und andere komplexitätsbezogene Überlegungen diktieren die Länge der Routine statt auferlegen eine Längenbeschränkung per se.
Wenn Sie Routinen länger als etwa 200 Zeilen schreiben möchten, seien Sie vorsichtig. Keine der Studien, die berichtet, verringerte Kosten, verringerte Fehler Preise, oder beide mit größeren Routinen unterschieden zwischen Größen größer als 200 Zeilen, und Sie sind verpflichtet, in eine obere Grenze von Verständlichkeit zu laufen, wenn Sie 200 Zeilen Code übergeben .
Ich sehe, danke. Was ist mit der Hauptfunktion, ist es akzeptabel, ein paar hunderttausend Zeilen Code in der Hauptfunktion zu haben? Was sind die Nachteile einer Funktion, die viele verschiedene Operationen ausführt? – anarchyistheanswer
@anarchyistheanswer: - Wie gesagt, 'main' ist auch eine Funktion, also wäre es besser, wenn Sie Ihre' main' Funktion unterbrechen und die verschiedenen Operationen in verschiedenen Funktionen schreiben und von Ihrem 'main' aus aufrufen könnten besser lesbar und wird als eine gute Praxis angesehen –
@anarchyistheanswer: - Soweit der Nachteil betrachtet wird, wäre die größte, wenn Sie für einen Fehler debuggen wollen, dann wäre es ein Albtraum, "200.000 Zeilen Code" zu debuggen (* was du unten kommentiert hast *). Außerdem wäre es für zukünftige Programmierer, die daran arbeiten werden, möglicherweise weniger lesbar. –
Wenn eine Funktion zu groß ist (> 60 Code-Anweisungszeilen, ausgenommen Kommentare/Leerzeilen), ist sie schwer zu verstehen und zu debuggen. Es wäre schwierig, die Funktion zu ändern. Es würde zu viele Variablen haben, würde wegen der Variablen mehr unerwünschte Stapelgröße benötigen.
Das Programm muss immer in Teile zerlegt werden. Jede Funktion sollte individuelle Arbeit leisten. Eine sort
Funktion, zum Beispiel sollte nicht filter
, oder erlauben zusätzliche Parameter zu optional Filter. Im weiteren Verlauf sollte die funktionale Zerlegung in die Zerlegung auf Objektebene gehen.
Lesen Sie über minimale Kopplung hohe Kohäsion.
Die C++ 11 Standard-Annex B-Staaten:
Da Computer endlich sind, sind C++ Implementierungen zwangsläufig in der Größe der Programme beschränkt sie können erfolgreich Prozess. Jede Implementierung muss diese Einschränkungen dokumentieren, soweit sie bekannt sind.
Die Grenzwerte können Mengen einschränken, die die unten beschriebenen oder andere enthalten. Die Klammerzahl nach jeder Menge wird als Minimum für diese Menge empfohlen. Diese Mengen sind jedoch nur Richtwerte und bestimmen nicht die Einhaltung.
Und geht auf die folgenden empfohlenen Mindest aufzulisten, die eher in einem riesigen Funktion getroffen werden (insbesondere, wenn es automatisch generiert ist):
- Nesting Ebenen zusammengesetzte Anweisungen, Iteration Kontrollstrukturen und Auswahlkontrollstrukturen [256].
- Bezeichner mit Block Scope in einem Block deklariert [1 024].
- Zeichen in einer logischen Quellzeile [65 536].
- Fallbezeichnungen für eine switch-Anweisung (ausgenommen solche für verschachtelte switch-Anweisungen) [16 384].
- Handler pro Versuch Block [256].
Sie sollten also Ihre Implementierungsdokumentation überprüfen, wenn Sie über die empfohlenen Mindestwerte hinausgehen. Die meisten Compiler haben entweder viel höhere oder gar keine Grenzen.
Ich werde dir keinen Rat geben. Ich werde nur versuchen, deine Frage zu beantworten.
Es gibt keine obere (oder untere) Grenze für die Länge einer Funktion im C++ - Standard. Es ist höchst unwahrscheinlich, dass Sie in einer Programmierlebenszeit eine einzelne Funktion schreiben könnten, die die Kapazität moderner Compiler wie VS oder GCC übersteigen würde. Ich würde erwarten, dass die praktische Obergrenze weit über 100.000 Zeilen und wahrscheinlich 1 Million oder mehr liegt.
Natürlich sollten Sie nicht so große Funktionen schreiben, aber eines der nützlichen Dinge, die Sie tun können, ist ein Programm schreiben, das C++ - Code ausgibt, den Sie dann kompilieren. In diesem Fall wäre es nicht ungewöhnlich, eine einzige Funktion von beträchtlicher Größe zu haben.
Mit großen generierten Code-Dateien (thx für die Erwähnung dieser) werden wir tatsächlich Probleme mit Funktionen, die 16k + Zeilen haben. Der Compiler ist ein ARM-Compiler. Visual C++ geht immer noch gut. – tiands
- 1. Wie viele beliebige Daten können in Beacon PDU enthalten sein?
- 2. Wie viele Optionswerte können in Opencart in Option sein
- 3. Maximale Codezeilen in einer Java-Klasse zulässig?
- 4. Können Methodenparameter in C# dynamisch sein
- 5. Wie füge ich Zeichenfolgen in viele Codezeilen ein? (Nicht Refaktor)
- 6. Wie viele Informationen enthalten pdb-Dateien? (C#/.NET)
- 7. Vim-Suche in C/C++ - Codezeilen
- 8. Warum muss C++ - Code in Funktionen enthalten sein?
- 9. Wie viele Datenpunkte enthalten in chart.js plotten
- 10. Wie teilt man lange Codezeilen in C++?
- 11. C++ müssen Header enthalten viele Verzeichnisse bis
- 12. Können C++ - Konstruktoren Templates sein?
- 13. Wie viele sind zu viele enthalten in <HEAD>?
- 14. Wie viele Codezeilen tun, um mein Projekt haben
- 15. Können mehrere Klassen in einer einzigen Datei in Eclipse enthalten sein?
- 16. Welche Dateien könnten enthalten sein?
- 17. Wie viele JVM können wir in einer Maschine haben?
- 18. Wie viele Codezeilen sollte der Entwickler pro Tag schreiben?
- 19. Sollte autogen.sh in einem Tarball enthalten sein?
- 20. C#: Können 'out' Parameter in Funktionen Objekteigenschaften/Variablen sein?
- 21. „zu viele Argumente für Funktion“ in C
- 22. Können C++ - Zuweisungsoperatoren freie Funktionen sein?
- 23. Wie viele Strings in C++
- 24. Wie kann ich bestimmte Codezeilen einfach von einer Kompilierung ausschließen?
- 25. Wie können mehrere Textfarben in einem Absatz in ReportLab enthalten sein?
- 26. Wie können Sie DRY mit einer Programmiersprache ohne Reflection sein?
- 27. Welche C# -Datentypen können NULL-Typen sein?
- 28. Wie können Sie in Django ein Feld einer Viele-zu-Viele-Klasse abrufen?
- 29. Sollte "Fixed minor bugs" in einer Commit-Nachricht enthalten sein?
- 30. Wie können Sie in einer Menüleistenposition anzeigen, wie viele Zeilen in einer Tabelle vorhanden sind?
Wird ein Programm langsamer ausgeführt, wenn es eine 1-Funktion mit 200.000 Zeilen Code im Vergleich zu 100 Funktionen mit je 2.000 Zeilen gibt? – anarchyistheanswer
Es wird möglicherweise wegen der erhöhten Stapelgröße und Verzweigungsbefehle langsam ausgeführt (Ein IF beginnt bei 10000. Zeile und endet bei 12400 Zeile). – Ajay
Ich bevorzuge max 10-20 max LOC, aber kurze Funktionen machen Code Lesbarkeit ++ und Wartbarkeit ++ – CppChris