Umbrechen von Parameterlisten
-
Hallo Leute,
wie breche ich am geschicktesten lange Parameterlisten um
Beispiel:std::vector<unsigned char> meineKlasse::meineMethode(std::vector<unsigned char> const ¶meter1, meineAndereKlasse const ¶meter2, std::string parameter3, int parameter4) { // irgendwelcher code }etwa so?:
std::vector<unsigned char> meineKlasse::meineMethode(std::vector<unsigned char> const ¶meter1, meineAndereKlasse const ¶meter2, std::string parameter3, int parameter4) { // irgendwelcher code }Bei mir im Quellcode breche ich in der Regel Zeilen um, wenn diese die 140-Zeichengrenze pro Zeile überschreiten. Ab und zu sehe ich auch Quellcode, in denen schon bei 80 Zeichen/Zeile umgebrochen wird. 80 Zeichen sind mir persönlich aber doch zu wenig. Allgemein versuche ich diese Grenzen gar nicht erst zu übertreten, da umgebrochende Zeilen für mich etwas schwerer zu lesen sind, als ungebrochene. Allerdings passiert es bei einigen Funktionen doch mal, dass diese zu lang werden. Was mache ich damit am besten? Nach Gefühl umbrechen oder typdef erstellen (z.B. typdef std::vector<unsigned char> buffer)?
Was mach ihr bei zu langen Zeilen?
viele Grüße,
SBond
-
das macht wohl jeder anders, ich mache es so:
foo ( param1 ,param2 ,param3 ,... ,paramN );
-
fsdfsdsdfs schrieb:
das macht wohl jeder anders, ich mache es so:
foo ( param1 ,param2 ,param3 ,... ,paramN );achso und bei der Definition/Deklaration analog, nur dass da halt noch der Rückgabetyp davor steht. D.h. Rückgabetyp und Funktionsname in einer Zeile, der Rest dann entsprechend darunter angeordnet.
-
Ich schlage vor, du holst dir ein Formatierungsprogramm wie z.B. clang-format.
Das macht in Grundeinstellugen folgendes:
std::vector<unsigned char> meineKlasse::meineMethode(std::vector<unsigned char> const ¶meter1, meineAndereKlasse const ¶meter2, std::string parameter3, int parameter4) { // irgendwelcher code }Ich nehme gerne
clang-format -style="{BasedOnStyle: llvm, IndentWidth: 4, ColumnLimit: 110, AccessModifierOffset: -4}", dann kommt raus:std::vector<unsigned char> meineKlasse::meineMethode(std::vector<unsigned char> const ¶meter1, meineAndereKlasse const ¶meter2, std::string parameter3, int parameter4) { // irgendwelcher code }Aber das ist Geschmackssache. Insbesondere mag ich gerne mehr Abstand (4 statt 2) und längere Zeilen als der Default, auch wenn insbes. die längeren Zeilen gerne zu Glaubenskriegen führen. Egal, hol dir einen Formatierer und stelle ihn so ein, wie du es magst. Also mehrere Parameter so untereinander wie du es gemacht hast, sind ok. Nur sollen Funktionen allgemein nicht sooo viele Parameter haben. Spätestens bei 6 oder mehr solltest du dir Gedanken machen.
-
Ja, unbedingt clang-format oder etwas Ähnliches nutzen. Ich habe das bei mir in CMake integriert, sodass bei jedem Build automatisch formatiert wird. Das spart sehr viel Zeit, weil ich nicht mehr auf jedes Leerzeichen achten muss und viel leichter Code verschieben oder kopieren kann.
-
vielen Dank

clang-format kommt mir vom Namen her bekannt vor. Ich schaue mir das mal an

Von den Parametern her sind bei mir 1-4 die Regel. Mehr Parameter kommen nur selten vor.