Erwin hat geschrieben:Hm... muss also dann wohl für mich selber entscheiden, wie ich es schreiben will?
Technisch kannst du machen was du willst, wie bereits geschrieben, es geht um Stil/Systematik.
Argumente hast du jetzt ja genug...
Erwin hat geschrieben:Hm... muss also dann wohl für mich selber entscheiden, wie ich es schreiben will?
mse hat geschrieben:Nicht unbedingt Geschmackssache sondern Stil/Systematik. Meiner Meinung nach sollten Codeelemente die das gleiche machen auch immer gleich aussehen. Ein Funktions/Prozedur Aufruf hat zwingend Klammern wenn Parameter übergeben werden sollen, darum sollten auch Aufrufe ohne Parameter mit Klammern geschrieben werden
mse hat geschrieben: um Verwechslungen mit Adressen und Variablen zu vermeiden.
Code: Alles auswählen
if FileDialog.Execute then OpenFile;
//besser
status:= FileDialog.Execute;
if status then OpenFile;
//Noch besser (wenn man die Funktion selber programmiert)
FileDialog.Execute(Status);
if status then OpenFile;
Mathias hat geschrieben:Sowas ist schon fehleranfällig:Code: Alles auswählen
if a = b then
WritelLn(a);
WritelLn(b);
Ichmachewas;
Code: Alles auswählen
if a = b
then b:= a+1;
Code: Alles auswählen
procedure TAudioPlayback.Play(Sender: TObject);
begin
if fPlaying then EXIT;
if length(AudioData) < 5 then EXIT;
fPlaying:= true;
DataIndex:= -1;
if assigned(ShowPlaying)
then TThread.Synchronize(TThread.CurrentThread,ShowPlaying);
StartPlayback;
end;
kupferstecher hat geschrieben:mse hat geschrieben: um Verwechslungen mit Adressen und Variablen zu vermeiden.
Das ist jetzt ein anderes (berechtigtes) Argument. Aber wie notwendig ist das? Besser man verwendet aussagekräftige Namen.
mse hat geschrieben:Hier sind Prozedur/Funktions-Variableninhalte und Adressen von Prozeduren/Funktionen gemeint welche ohne Klammer geschrieben werden müssen.
Code: Alles auswählen
function Foo: Integer; begin Result := 42; end;
var Bar: function: Integer;
i: Integer;
begin
Foo; // Kein fehler
Bar := @Foo; // kein Fehler
Bar := Foo; // Compilerfehler
Bar; // Kein Fehler
i := Bar; // Compilerfehler
Mathias hat geschrieben:
Aber eine Ausnahme gibt, bei rekursiven Funktionen.
Ältere Pascal Kompiler dürften eine Deklaration mit () nicht akzeptieren. (Ist eine Delphi oder spätere Turbo Pascal version erweiterung)
mse hat geschrieben:Hier sind Prozedur/Funktions-Variableninhalte und Adressen von Prozeduren/Funktionen gemeint welche ohne Klammer geschrieben werden müssen.
Warf hat geschrieben:Da FPC typstreng ist, sowie das addressieren von Funktionsergebnissen nicht unterstützt werden all die Fehler aber zur Compilezeit entdeckt, was ein paar minuten mehrarbeit bedeutet, aber nicht zu irgendwelchen Signifikanten Fehlern führen kann.
marcov hat geschrieben:Ältere Pascal Kompiler dürften eine Deklaration mit () nicht akzeptieren. (Ist eine Delphi oder spätere Turbo Pascal version erweiterung)
Mathias hat geschrieben:TP unmöglich, weil BP7 dies nicht übersetzt.
Und Du sagst wiederum, BP7 hätte es ohne Klammer nicht übersetzt? Verstehe ich das jetzt richtig?
Code: Alles auswählen
WriteLn; // geht
WriteLn(); // geht nicht
Mathias hat geschrieben:Und Du sagst wiederum, BP7 hätte es ohne Klammer nicht übersetzt? Verstehe ich das jetzt richtig?
Nein umgekehrt.Code: Alles auswählen
WriteLn; // geht
WriteLn(); // geht nicht
So ist dann immer deutlich zu erkennen, dass eine Procedure/Funktion aufgerufen wird.
Code: Alles auswählen
i := Test;
Mathias hat geschrieben:Stimmt da hast du recht, so weis man nicht, ob Test eine Variable oder eine Funktion ist.Code: Alles auswählen
i := Test;
Code: Alles auswählen
CurrentData := GetTestData;
Code: Alles auswählen
CurrentData := TestData;
Da muss ich zustimmen, vielfach werden unlogische Namen für Funktionen verwendet. Ein Set und Get ist immer gut.Was nicht passiert, wenn man mal anfängt Bezeichner mit vernünftigen Namen zu versehen.
Na ja, Pi und Random sind werden doch häufig gebraucht. Und Pi() wäre doch äußerst ungewöhnlich! Ich denke, viele wissen noch nicht einmal, daß das eine Funktion ist.Mathias hat geschrieben:Mir kommt momentan nicht mal einer Funktion ohne Parameter in Sinn...