AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

A vor Variablen

Ein Thema von Bladefire · begonnen am 10. Jul 2014 · letzter Beitrag vom 15. Jul 2014
Antwort Antwort
Seite 1 von 3  1 23      
Bladefire

Registriert seit: 30. Jun 2014
67 Beiträge
 
#1

A vor Variablen

  Alt 10. Jul 2014, 17:45
Hallo,

hin und wieder treffe ich ein A vor Variablen in verschiedenen funktionen an. Ich würde gerne wissen was das heißt. Bzw. unter welchen Stichwort ich es googlen kann.

Lg Simon
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: A vor Variablen

  Alt 10. Jul 2014, 17:47
Das A steht für „argument“. Ist einfach eine Konvention, die von manchen verwendet wird, genau wie das T für „type“ bei Klassen oder das F für „field“ bei Feldern.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: A vor Variablen

  Alt 10. Jul 2014, 18:07
Ich glaube, dass es seinen Ursprung hier hat (Bsp zur Verdeutlichung)

Delphi-Quellcode:
type
  TPerson = class
  private
    Age: Integer
  public
    procedure setAge(AAge: Integer);
  end;

procedure TPerson.setAge(AAge: Integer):
begin
  Age := AAge;
end;
Bei dieser Zuweisung kann man kein Age := Age machen, da die Sichtbarkeit von innen nach außen hin aufgelöst wird (Funktionsparameter -> Klassenfelder -> Globale Variablen -> ...)

Ich find das aber eher unschön; da gibts auch eine einfache Lösung dafür:
Delphi-Quellcode:
procedure TPerson.setAge(Age: IntegeR);
begin
  Self.Age := Age;
end
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

AW: A vor Variablen

  Alt 10. Jul 2014, 18:16
Namenloser ist da eher schon auf dem richtigen Pfad. Ich habe auch ein Fremdprojekt, welches ich übernommen habe. Da wurde auch alle Variablen so deklariert. Die Buchstaben können auch die Art der Variable ausdrücken, wie zum Beispiel Integer, String u.s.w.

Edit:
Ich glaube so etwas in der richtig suchst Du oder ? Link
Rolf Warnecke
App4Mission

Geändert von RWarnecke (10. Jul 2014 um 18:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.123 Beiträge
 
Delphi 12 Athens
 
#5

AW: A vor Variablen

  Alt 10. Jul 2014, 18:23
Die Buchstaben können auch die Art der Variable ausdrücken, wie zum Beispiel Integer, String u.s.w.
Joar, wobei ich diese Art eher schlecht finde.

Es gibt mehrere Gründe für einen Prefix oder Suffix.
- Kennzeichnung der Quelle (Position)
- Kennzeichnung des Typs
- wer weiß was sonst noch

Aber so kann man es auch bei den Enums betrachten, was nun schöner ist.
- Prefix als Gruppierung/Kennzeichnung des Enum-Typs
- oder ohne Prefix und dafür mit Namespace


Bei Parametern lass' ich die Prefixe aber auch lieber weg, denn so heißen die Property genauso wie die zugehörigen Parameter.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: A vor Variablen

  Alt 10. Jul 2014, 18:39
Wenn man eine gewisse Namens-Konvention einhält, dann weiß man auf einen Blick, wo die Variablen herkommt, bzw. wo die hingehört:
Delphi-Quellcode:
// Typen fangen mit T an
TFoo = class
private
    // privates Klassen-Feld: hier gibt es nix definiertes, ich nehme dafür einen _
  class var
    _Value : string;
private
  // Felder einer Klasse beginnen mit einem F
  FValue : string;
  function GetValue : string;
public
  // Eine Eigenschaft wird so benannt, wie sie genannt wird ohne Prefix
  property Value : string read GetValue write FValue;

  // Argumente von Methoden beginnen mit einem A
  function GetSomething( const AValue : string ) : string;
end;

function TFoo.GetValue : string;
begin
  Result := '*' + FValue + '*';
end;

function TFoo.GetSomething( const AValue : string ) : string;
var
  // Hier gibt es keine allgemein gültige Konvention
  // Meine Lokalen Variablen beginnen mit einem L
  LValue : string;
begin

  LValue { Lokale Variable } :=
    Value { Eigenschaft }  +
    AValue { Argument der Methode } +
    FValue { Feld der Klasse } +
    _Value { Klassen-Variable };

  Result := LValue;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.123 Beiträge
 
Delphi 12 Athens
 
#7

AW: A vor Variablen

  Alt 10. Jul 2014, 19:09
Nja, da man ja bekanntlich Funktionen nicht so groß machen soll, hat man somit die Lokalen und die Parameter immer im Blick und weiß somit wo sie her sind.

Felder und globale Variablen/Konstanten sind aber aus dem Blickfeld raus.



OK, außer man hat ein Plugin, welches die verschiedenen "Typen" farblich kennzeichnet.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: A vor Variablen

  Alt 10. Jul 2014, 20:20
In Zeiten einer modernen IDE, die mir über ein Rollover sagt, wo ein Bezeichner herkommt, kann man eigentlich komplett drauf verzichten, über Präfixe die Herkunft zu kodieren. Und da wir uns -zumindest in modernen Programmiersprachen- auch von der ungarischen Notation und Ähnlichem verabschiedet haben, kann man auch langsam den Rest in Angriff nehmen. Allerdings sind einige Präfixe und Konventionen sehr praktisch: ein 'f' für ein Feld z.B. Dann ist der backing store (das Feld) der Property 'Schießmichtot' immer 'fSchießmichtot' (oder 'F'?) und das ist dann einfach praktisch. Oder das 'I' für ein Interface, dann implementiert die Klasse 'Foobar' im Allgemeinen das Interface 'IFoobar'.

Bezüglich des 'A' habe ich auch Code gesehen, der das 'a' wie ein englisches 'ein' verwendet: Wenn man die Deklaration im Englischen liest: Procedure Save(aCustomer) steht dort ja 'Save a customer'. In in der Konsequenz wäre dann Procedure Summarize(anArgument) grammatikalisch korrekt. Im Kontext von Clean Code, wo (beinahe) alles nur um Lesbarkeit geht, wird auch diskutiert, ob man nicht lieber Procedure Save(theCustomer) verwenden sollte. Blöd ist das nicht. Sinnvoll auch imho nicht, aber wenigstens nicht hirnlos.

Eins noch: Jeder macht es, wie er will, nur eins ist wichtig: Im Team machen es alle gleich.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: A vor Variablen

  Alt 11. Jul 2014, 01:56
Diese Präfixe sind, zumindest in Delphi/Pascal, dem Umstand geschuldet, dass nicht zwischen Groß- und Kleinschreibung unterschieden wird. Unter Java und C# gilt meistens: Felder, Klassen und Methoden groß schreiben, Parameter und lokale Variablen klein. In Delphi heissen diese einbuchstabigen Präfixe meistens:

T: Type
I: Interface
L: Lokale Variable
F: Feld einer Klasse
A: Argument einer Methode, dass es dem Englischen Artikel entspricht ist eher glückliche Fügung
Methoden selbst bekommen meistens kein Präfix.

Alle Buchstaben werden mal groß und mal klein benutzt. Ich tendiere alles groß zu nutzen, ausser das "a" (weil ähnlich wie lokale Variablen in der Methode vom Scope her) und dem "l", um dem Kleinschreiben lokaler Variablen in anderen Sprachen zu entsprechen.

Beispiel:
Delphi-Quellcode:
type
  TSomething = class(TObject)
  private
    FSomeValue: Integer;
    procedure SetSomeValue(aValue: Integer);
  public
    property SomeValue: Integer read FSomeValue write SetSomeValue;
  end;

implementation

procedure TSomething.SetSomeValue(aValue: Integer);
var
  lCondition: Boolean;
begin
  lCondition := aValue > FSomeOtherValue;
  if lCondition then
    FSomeValue := aValue;
end;
Dadurch ist ohne viel im Code herumzusuchen recht schnell deutlich, welche Variable wo deklariert ist, und wo in etwa ihre Werte her kommen müssten.
Das ist aber alles nur Konvention unter Programmierern. Müssen muss das keiner so machen, es hat sich lediglich als Quasi-Standard etabliert. Auswirkungen auf den Code an sich hat das nicht, "nur" auf die Lesbar-, Wartbar- und Eindeutigkeit.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (11. Jul 2014 um 01:59 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#10

AW: A vor Variablen

  Alt 11. Jul 2014, 07:33
...A: Argument einer Methode, dass es dem Englischen Artikel entspricht ist eher glückliche Fügung
Sehe ich auch so.. aber es ist dann weitergesponnen worden.

'L' und 'A' würde ich sogar noch streichen. 'A' hab ich selber früher verwendet, aber 'L' noch nie und man braucht es nicht: Eine gut geschriebene Methode passt auf eine Bildschirmseite, macht genau eine Sache und ist daher übersichtlich genug, um den Scope komplett darzustellen.
Nja, da man ja bekanntlich Funktionen nicht so groß machen soll, hat man somit die Lokalen und die Parameter immer im Blick und weiß somit wo sie her sind.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz