![]() |
Coding Style: Benennung von Parametern
Hallo.
Klingt vielleicht ein wenig komisch, aber ich würde gern wissen wie ihr es mit der Benamsung von Variablen in folgenden Fall haltet: Eine Prozedur hat viele Parameter, z.B. ein ganzes Dutzend (bitte kein Streit darüber, ob das sinvoll ist, oder das Schnittstellen klein sein sollten etc.). In der Prozedur selbst, sollen die Parameter nicht geändert werden, also werden 12 weitere Variablen in der Prozedur benötigt die mit den Werten der Eingangsparamter versorgt müssen. Wie haltet ihr nun die Eingangsparameter von den internen (oder besser: lokalen) Variablen auseinander? Schreibt ihr z.B. ein "prm_" vor jeden Eingangsparameter um diese Variable als "Eingangsparameter" zu kennezeichen? Also in etwa: procedure Tuwas(prm_Hoehe, prm_Breite: integer) var Hoehe, Breite: integer begin Hoehe := prm_Hoehe Breite:= prm_Breite Kann ja schon unübersichtlich werden, wenn wie gesagt, die Schnittstelle viele (z.T. lange) Variablennamen hat. Auf der anderen Seite ist folgende Lösung ja auch nicht gerade sinnvoller: procedure Tuwas(H, B: integer) var Hoehe, Breite: integer begin Hoehe := H Breite:= B Habt ihr da einen Tipp, wie man es macht, dass man a) die Dinger auseinanderhalten kann, aber sich auch nicht 'nen Wolf schreibt? Danke & Gruß Jazzman |
AW: Coding Style: Benamsung von Parametern
Es gibt Leute, die packen ein 'a' vor einen Parameter. Aber heutzutage braucht man das eigentlich nicht.
Wenn Du nämlich richtig sauber programmierst, hast du nur 0-4 Parameter und so kleine Prozeduren, das man sofort sieht, was Parameter ist und was nicht. Wenn du Parameter kennzeichnen willst, tust du das dann auch für Prozeduren, Funktionen, Methoden, globale Variablen, lokale Variablen, Felder usw? |
AW: Coding Style: Benamsung von Parametern
Und ich würde es andersrum machen.
Die öffentlichen Schnittstellen bekommen eine ordentliche Benamung, also hier wären es die Parameter und nicht die lokalen Variablen. Wenn sich der Typ der Parameter nicht ändert, dann kann man diese doch intern weiterbenutzen und muß keine sinnlose Kopie verwenden. Ich weiß nicht, aber mit S finde ich den Namen irgendwie komisch. :gruebel: |
AW: Coding Style: Benamsung von Parametern
Zitat:
|
AW: Coding Style: Benamsung von Parametern
Hi,
Übergabem erhalten ein großes A davor - da habe ich mich in langen Jahren an Delphi angeglichen. Innerhalb der Procedure gibt es dann lokale Variablen mit ungarischer Notation. Was ich aber nicht verstehe - wenn die Variablen intern nicht geändert werden sollen, warum diese dann kopieren? Spätestens hier würde ich mir echt überlegen ob das so korrekt ist was da abgeht... Grüße |
AW: Coding Style: Benamsung von Parametern
Zitat:
Das Einzige, was ich mir vorstellen kann, ist dass die unveränderten Werte nochmal in der Funktion benötigt werden :gruebel: |
AW: Coding Style: Benamsung von Parametern
Wenn es eine öffentliche Methode ist, bekommen die Parameter bei mir in der Regel einen aussagekräftigen Namen und ein A davor. Bei internen schlamp ich öfter mal rum, und kürze so ab, dass ich es nur noch selbst verstehe (manchmal sogar das nicht mehr :oops:)
Variablen heißen bei mir eh meist sowas wie i, j, x, y, m, n, s, t, s1, s2, idx, str, dx, a3 und so 'nen Kram halt, und die verwende ich innerhalb der Methode auch gern für unterschiedliche Zwecke wieder.:mrgreen: Achtung, nicht nachmachen, kann Augenkrebs verursachen! :stupid: |
AW: Coding Style: Benamsung von Parametern
Ich halte es im Prinzip so, dass ich private Klassenvariablen mit F "markiere", also F also Präfix verwende, Beispiel FHeight, und bei Parametern (meistens) ein A voranstelle.
Ich muss hier allerdings dazu sagen, dass, nachdem ich neulich das Buch Clean Code (ISBN-13: 978-3826655487) gelesen habe, eher dazu tendieren würde das A wegzulassen! Das hat den Grund, dass ich in der Zwischenzeit dazu tendiere wesentlich kompaktere Klassen und Methoden zu programmieren, ebenso darauf achte, welche Namen ich für Methoden und Variable benutzt. Allein aufgrund dieses Programmierstils komme ich eigentlich nie in die Versuchung eine lokale Variable wie einen Parameter benennen zu wollen. |
AW: Coding Style: Benamsung von Parametern
Zitat:
Ich verstehs einfach nicht - vielleicht liegts an der Uhrzeit - warum übergeb ich Parameter an eine Proc/Func ohne die Absicht diese zu verändern und kopiere die in lokale Variabeln (mit dem selben Namen) um diese doch zu verändern? Wenn es darum ginge z.B. einen String auseinander zu nehmen in einer Schleife, könnte ich das noch ein winzig kleines Stück nachvollziehen - wobei der Arbeitsstring lokal in der Proc/Func definitiv anders heißt als der Übergabeparameter, einfach schon aus dem Grund weil da mit der Zeit einfach was anderes drin steht... Grüße |
AW: Coding Style: Benamsung von Parametern
Zitat:
|
AW: Coding Style: Benamsung von Parametern
Benamsung von Parametern -> bitte ändern in: Benennung von Parametern
|
AW: Coding Style: Benamsung von Parametern
Zitat:
|
AW: Coding Style: Benamsung von Parametern
Zitat:
|
AW: Coding Style: Benamsung von Parametern
@furchtbichler/Shark: 100%ige Zustimmung. Blöd wenn man in gewachsene Strukturen rein kommt und Sourcen aus 10-20 Mannjahren weiter pflegen muss mit 3-4 Kollegen. Da kann man halt schlicht nicht so wie man will und irgend wann sehen die privaten Sourcen halt genauso aus, weil das Hirn so einfacher und schneller denkt ;-)
|
Coding Style: Benennung von Parametern
Beitragstitel geändert.
|
AW: Coding Style: Benennung von Parametern
Zitat:
Liebe Grüße, Valentin |
AW: Coding Style: Benamsung von Parametern
Zitat:
Zitat:
|
AW: Coding Style: Benennung von Parametern
Bei case-sensitiven Sprachen nehme ich gerne eine am Anfang klein Geschriebene (ansonsten weiterhin Camel-Case) Version der nachher mit dem Wert besetzten Properties, bzw. klein geschriebene sprechende Namen. Ungarisch kommt bei mir nur in Delphi, und nur bei Enums ins Haus. Fast alle IDEs bieten mehr als genug Unterstützung bei der Erkennung der Typen zum Zeitpunkt der Verwendung, dass das einfach über ist.
In Delphi verwende ich, weil nicht case-sensitive, ersatzweise den Property-/sprechenden Namen mit vorangestelltem a. Allerdings einem kleinen, da ich auch lokale Variablen klein schreibe, und Parameter den selben Scope haben. Damit grenzen sie sich noch etwas hübscher von Feldern, Properties und Methoden ab. |
AW: Coding Style: Benennung von Parametern
Ne Frage - warum eig. ein A (wie Attribut?) anstatt P (wie Parameter!)
@Furchtbichler: Private Felder einer Klasse werden ja mit F vermerkt ala
Delphi-Quellcode:
:P
FSomeProperty: TSomeType;
|
AW: Coding Style: Benennung von Parametern
Wieso P wie Pointer statt A wie Argument? :lol:
|
AW: Coding Style: Benennung von Parametern
Aber Parameter <> Argumente!
Im Rump einer Methode stehen Paramter, keine Argumente ;) ... oder? |
AW: Coding Style: Benennung von Parametern
Zumindest
![]() [edit] Etwas exaktere Definition: Zitat:
![]() |
AW: Coding Style: Benennung von Parametern
Zitat:
Die Logik "Es ist ein Parameter, also P" ist wie: "Es ist ein String, also nenne ich ihn 'String'" statt "Es enthält ein Argument, also A" -> "Es enthält den Namen, also nenne ich es 'Name'" :mrgreen: |
AW: Coding Style: Benennung von Parametern
Zitat:
Nennst du deine Methoden nicht Method1 bis X? :lol: |
AW: Coding Style: Benennung von Parametern
Zitat:
|
AW: Coding Style: Benennung von Parametern
Zitat:
Delphi-Quellcode:
kann dann als "a Value" ("ein Wert") gesprochen werden.
procedure Foo( aValue : integer );
Aus dem gleichen Grund werden teilweise BoolProperties auch ein "Is" vorangestellt.
Delphi-Quellcode:
property IsValid : Boolean;
|
AW: Coding Style: Benennung von Parametern
Ich verstehe das zwar eigentlich auch so, aber dann müsste es doch konsequenterweise statt z.B. AOwner AnOwner heißen, oder sehe ich das falsch?
|
AW: Coding Style: Benennung von Parametern
Zitat:
|
AW: Coding Style: Benennung von Parametern
Zitat:
Warum beginnen dann die Felder bei Klassen mit F wie zB.
Delphi-Quellcode:
[Edit]
TSomeClass = class
private FSomeProperty: TSomeType; public property SomeProperty: TSomeType read FSomeProperty write FSomeProperty; end; Wenn der Bezeichner vom Typ String ist, benenne ich ihn ja nicht zwingendermaßen strSomeVariable. Je nach dem wo sie sich befindet, so wird sie auch benannt - bei Klassenfeldern eben mit F, als Parameter mit P (übrigens hat sich bei mir auch A eingebürget -.-') usw. [/Edit] Bei Methoden hingegen muss man das ja nicht machen, denn Methoden sind nur in Klassen enthalten. (Oder werden mittlerweile Prozeduren und Funktionen in Records auch Methoden genannt? xD) Variablen dahingegen können an verschiedensten Orten definiert werden -> global, lokal, in Klassen, in Objekten/Records/..., in Funktionen/Prozeduren usw. usf. |
AW: Coding Style: Benennung von Parametern
Zitat:
|
AW: Coding Style: Benennung von Parametern
Wenn man sich das alles anschaut ist das eigentlich recht schlüssig (auch wenn es mir erst bei der Betrachtung dieses Themas zum ersten mal so richtig klar wurde):
F -> Field P -> Pointer A -> Argument (bzw. kann auch als "a" wie "a value" verstanden werden)
Delphi-Quellcode:
private
fPoint : TPoint; procedure SetPoint(aPoint: TPoint); // unsinnig - aber mir fällt grad kein besseres Beispiel ein function SetPointByPointer(pPoint: PPoint); |
AW: Coding Style: Benennung von Parametern
Dass das 'F' für 'Feld' (bzw. im englischen 'field') steht, wäre mir nicht
so leicht in den Sinn gekommen (aber durchaus sinnvoll *g*) Zitat: "Weiterhin hat es sich durchgesetzt, die Variablen einer Klasse, Felder genannt, immer mit dem Buchstaben F zu beginnen. So werden Verwechselungen mit globalen und lokalen Variablen vermieden." ![]() LG |
AW: Coding Style: Benennung von Parametern
Nja, im Prinzip gibt es ja keine festen Regeln, aber was mich immer ganz wuschig verrückt machtt,
ist
Delphi-Quellcode:
.
property Text: string read FGetText write FSetText;
G und S als Erstes erkenn ich schneller, also bei den Methodendeklarationen, aber vorallem denk ich wegen dem F meißt zuerst an das Feld und nicht an eine Methode. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz