AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Die "richtige" Sourcecode Formatierung?

Ein Thema von Mavarik · begonnen am 8. Aug 2016 · letzter Beitrag vom 13. Aug 2016
Antwort Antwort
Seite 8 von 10   « Erste     678 910   
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#71

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 03:09
Ich sortiere sie ein wenig, um es übersichtlicher zu gestalten:
Delphi-Quellcode:
uses
  { Standard }
    System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
[...]
  { Eigen }
    Unit_HTTP, Unit_HTTPS, Unit_Modulverarbeitung
  {};
Das mache ich auch so. Meistens als Delphi, 3rd-Party, Common (das sind unsere gemeinsamen Units für alle Projekte) und Project unterteilt. Wir benutzen auch Common als Namespace für diese gemeinsamen Units und einen projektspezifischen für die Units im Projekt. So kann dann eine Unit zum Beispiel heißen Common.Utils.StringTools.pas. Diese liegt dann im Verzeichnis common/utils im Repository. Und darin befindet sich eine gleichnamige Klasse TStringTools.
Interfaces liegen in einem Unterordner Interfaces und heißen dann z.B. Common.Interfaces.Utils.StringTools.pas.

So findet man zu Klassen und Interfaces schnell den Unitnamen und auch das Verzeichnis, in dem die Unit liegt.

Das finde ich sehr viel sinnvoller als ein Unit_ oder ähnliches voranzustellen. Denn dass es eine Unit ist, weiß ich auch so. Durch den Namespace Common weiß ich, dass es eine gemeinsame Unit ist, die nicht in das Projekt eingebunden sein muss um benutzt zu werden. (Die werden bei uns separat kompiliert.)
Ich habe also eine Mehrinformation, was bei Unit_ nicht der Fall ist. (Es sei denn du machst das genauso, nur mit Unit_ und Project_, was dann aber erst recht für Namespaces spräche.)

Vom Untereinanderschreiben halte ich wenig. Entweder sind es so wenige Units, dass man sie eh überblickt, oder es sind (z.B. in einem Datasnap oder FireDAC Datenmodul) so viele, dass sie untereinander geschrieben auch nicht leichter überschaubarer sind.

Dazu kommt, dass Error Insight ja anzeigt, wenn eine Unit fehlt. Leider kommt dazu ein Störrauschen von falschen Meldungen, aber wenn man sich dran gewöhnt hat, lassen sich diese recht gut von echten Meldungen unterscheiden. Wenn es zu viele falsche sind, bringt es natürlich nichts mehr.

Woher kommt eigentlich dieses lästige und überflüssige A am Anfang von Parametern (z.B. "AValue")?
[...]
Im Delphi Sourcecode - z.B. http://docwiki.embarcadero.com/Libra...ysUtils.Format - wird es nicht verwendet.
Das wird im Quelltext der RTL und VCL durchaus häufig verwendet wie Stevie schon sagte, prominentestes Beispiel ist der Konstruktor einer Komponente:
http://docwiki.embarcadero.com/Libra...mponent.Create

Ich benutze das A auch, weil Parameter einer Methode so eindeutige Namen bekommen. Denn Test als Name des Paramaters würde zwar funktionieren, wäre aber sehr unsauber, weil die Property auch so heißt:
Delphi-Quellcode:
type
  TExample = class
  private
    FTest: Integer;
  public
    constructor Create(const ATest: Integer);
    property Test: Integer read FTest write FTest;
  end;

constructor TTest.Create(const ATest: Integer);
begin
  FTest := ATest;
end;
Und daher finde ich es sehr sinnvoll durchweg das A als Prefix zu verwenden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (12. Aug 2016 um 03:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#72

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 08:21
Woher kommt eigentlich dieses lästige und überflüssige A am Anfang von Parametern (z.B. "AValue")?

Im Delphi Style Guide ( http://edn.embarcadero.com/article/10280) ist es nicht zu finden.

Im Delphi Sourcecode - z.B. http://docwiki.embarcadero.com/Libra...ysUtils.Format - wird es nicht verwendet.

Handelt es sich um eine Modeerscheinung?
Vermutlich kommt das daher, um unsaubere Kapselung und reichlich globale Variablen weiter führen zu können (nicht das Verfechter dieser Notation sowas tun würden, schon gar nicht unsere werten Mitforisten, ich denke aus dieser Not heraus wurde diese Notation geboren, das ist alles). Genauso gibt es ja noch die "kleines L" vor lokale Variablen Fraktion - ummm... li, anyone?. Ich halte es mit einem gesunden Mittelmaß: das "a" für Argument nehme ich gerne mit, das ist auch in den "offiziellen" Delphi Units so. Das "l" verkneif ich mir genauso wie den Typ der Variablen (egal ob infix oder postfix, sonst müsste ich mir bei ii jedesmal Gedanken machen, was nun Name und was Typ ist), Felder von Klassen bekommen wiederum ein "f" vorangestellt, dann weiß ich woran ich bin. Meiner Meinung nach muss ein Bezeichner lesbar sein, dann erübrigt sich auch ihm mitzugeben, daß er lokal ist und welchen Typ er hat. Letzteres erledigt die IDE ja ohnehin schon im Mouseover. Ersteres ergibt sich aus der Kürze der Methode.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benedikt Magnus

Registriert seit: 6. Jul 2012
Ort: Bonn
190 Beiträge
 
FreePascal / Lazarus
 
#73

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 09:36
Zitat von jaenicke:
Das finde ich sehr viel sinnvoller als ein Unit_ oder ähnliches voranzustellen. Denn dass es eine Unit ist, weiß ich auch so. Durch den Namespace Common weiß ich, dass es eine gemeinsame Unit ist, die nicht in das Projekt eingebunden sein muss um benutzt zu werden. (Die werden bei uns separat kompiliert.)
Ich habe also eine Mehrinformation, was bei Unit_ nicht der Fall ist. (Es sei denn du machst das genauso, nur mit Unit_ und Project_, was dann aber erst recht für Namespaces spräche.)
Es hat in etwa den gleichen Zweck wie dein Namespace Common.
Diese Art der Bezeichnung stammt noch aus meiner ganz frühen Lernphase, und da erschien mir das als Abgrenzung zu den Standardunits (damals unter Delphi 5/7) vernünftig, denn bei all den Komponenten habe ich das ja auch so gemacht (Form_Anmeldung, Button_Ablehnen...). Da ich aber noch nie so viele eigene Units in einem Projekt verwendet habe, dass ich Untergruppen bräuchte, bin ich seitdem auch nie auf Namespaces umgestiegen. Irgendwann, wenn ich mal ein wirklich großes Projekt habe, mache ich das vielleicht (ich habe es überlegt, als ich mir damals XE5 zugelegt hatte).
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#74

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 11:39
Vermutlich kommt das daher, um unsaubere Kapselung und reichlich globale Variablen weiter führen zu können (nicht das Verfechter dieser Notation sowas tun würden, schon gar nicht unsere werten Mitforisten, ich denke aus dieser Not heraus wurde diese Notation geboren, das ist alles).
Interessante Erklärung, es ist immer gut eine sachliche Begründung zu haben.

Durch den Namespace Common weiß ich, dass es eine gemeinsame Unit ist, die nicht in das Projekt eingebunden sein muss um benutzt zu werden.
Gute Anregung. Mir ist das uses oft zu unübersichtlich, das könnte helfen. Es muß ja nicht "common", "Herzstück" reicht auch.


Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#75

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 12:20
Vermutlich kommt das daher, um unsaubere Kapselung und reichlich globale Variablen weiter führen zu können
Das bezweifle ich. Ich habe ja das AOwner als Beispiel genannt. Da gibt es in der Klasse gleichzeitig noch Owner als Property. Und wenn man sich mal anschaut wo das noch auftauchte in älteren Quelltexten findest du noch weitere solche Fälle.

Einen Fall wie den von dir genannten sehe ich hingegen nirgends. Worauf beziehst du dich denn da? Im RTL oder VCL Quelltext meine ich.

Gute Anregung. Mir ist das uses oft zu unübersichtlich, das könnte helfen. Es muß ja nicht "common", "Herzstück" reicht auch.
Das heißt bei uns Common.Core.XYZ bzw. Frontend.Core.XYZ usw.
Das macht auch mehr Sinn als ein deutscher Bezeichner...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (12. Aug 2016 um 12:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#76

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 13:05
Vermutlich kommt das daher, um unsaubere Kapselung und reichlich globale Variablen weiter führen zu können
Das bezweifle ich. Ich habe ja das AOwner als Beispiel genannt. Da gibt es in der Klasse gleichzeitig noch Owner als Property. Und wenn man sich mal anschaut wo das noch auftauchte in älteren Quelltexten findest du noch weitere solche Fälle.

Einen Fall wie den von dir genannten sehe ich hingegen nirgends. Worauf beziehst du dich denn da? Im RTL oder VCL Quelltext meine ich.
Oh, ich habe das durchaus historisch gemeint. Nicht bezogen auf aktuell in der freien Wildbahn zu findende Quellen. Welchen Grund mag es sonst geben für einen Präfix, der ein Argument kennzeichnet? Heutzutage: keinen, außer "ham wir schon immer so gemacht". Vorausgesetzt natürlich, man hat ansonsten saubern Code (kurze Parameterlisten, kurze Methoden etc.)


Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#77

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 13:12
Das macht auch mehr Sinn als ein deutscher Bezeichner...
Wenn man nur Code für den deutschen Sprachraum schreibt mögen deutsche Bezeichner funktionieren.

Delphi-Quellcode:
begin
  HöreAufDemEinAusgangsKanal(10230);
end;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#78

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 14:08
Welchen Grund mag es sonst geben für einen Präfix, der ein Argument kennzeichnet? Heutzutage: keinen, außer "ham wir schon immer so gemacht". Vorausgesetzt natürlich, man hat ansonsten saubern Code (kurze Parameterlisten, kurze Methoden etc.)
Wie sieht denn deine Alternative für mein Beispiel aus?

// EDIT:
Wenn man nur Code für den deutschen Sprachraum schreibt mögen deutsche Bezeichner funktionieren.
Das bezweifle ich auch nicht, aber da die delphieigenen Bezeichner zwangsläufig englisch sind, läuft es immer auf ein Mischmasch aus Deutsch und Englisch hinaus...
Das macht den Code nicht übersichtlicher...

Beispiel aus freier Wildbahn:
Delphi-Quellcode:
if SchnellstartHaken.Checked or ZwangsstartAktiviert then
begin
  StartenKnopf.Click;
  Exit;
end;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (12. Aug 2016 um 14:17 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#79

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 14:21
Wie sieht denn deine Alternative für mein Beispiel aus?
Eventuell so (nicht getestet):

Delphi-Quellcode:
type
  TExample = class
  private
    FTest: Integer;
  public
    constructor Create(const FTest: Integer);
    property Test: Integer read FTest write FTest;
  end;

constructor TTest.Create(const FTest: Integer);
begin
  Self.FTest := FTest;
end;
Selbst wenn das funktioniert wäre das aber Programmier-Selbstmord, da sind die Fehler vorprogrammiert.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#80

AW: Die "richtige" Sourcecode Formatierung?

  Alt 12. Aug 2016, 14:50
Dann doch lieber "neutral":

Delphi-Quellcode:
type
  TExample = class
  private
    FTest: Integer;
  public
    constructor Create(const (A)Value : Integer);
    property Test: Integer read FTest write FTest;
  end;

constructor TTest.Create(const (A)Value: Integer);
begin
  FTest := (A)Value;
end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:35 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