Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Weglassen von Parameterlisten (https://www.delphipraxis.net/165616-weglassen-von-parameterlisten.html)

Codewalker 9. Jan 2012 10:57

Delphi-Version: 2010

Weglassen von Parameterlisten
 
Hallo zusammen.

Mir ist in einem größeren Projekt etwas aufgefallen, von dem ich immer gedacht habe, es würde nicht kompilierbar sein. Angenommen ich habe folgendes:

Delphi-Quellcode:
type TTest = class
     {...}
     procedure Test(sMsg: String);
   end;

{...}

procedure TTest.Test();
begin
  ShowMessage(sMsg);
end;
Dieser Code ist tatsächlich kompilierbar, obwohl ich in der Implementierung der Funktion alle Parameter weggelassen habe. Das kann sehr irritierend sein, weil man die Parameter trotzdem verwenden kann und evtl. nicht sieht, dass es sich überhaupt um Parameter handelt.
Frage: Kompiliert das schon immer? Warum sollte das gehen oder sinnvoll sein? Kann man das Verhalten abschalten?

Neutral General 9. Jan 2012 11:11

AW: Weglassen von Parameterlisten
 
Hallo,

Also bei mir kompiliert das weder in D2009 noch in XE2.

Neumann 9. Jan 2012 11:15

AW: Weglassen von Parameterlisten
 
Ohne die Klammern sollte es gehen. Gut finde ich es auch nicht, sehe auch lieber die Parameter in der Implementierung und schreibe sie dort auch immer hin.

Memnarch 9. Jan 2012 11:20

AW: Weglassen von Parameterlisten
 
Das praktische ist wohl, dass du beim verändern der Parameter in der Deklaration(einem Parameter nen defaultwert gegeben hast oder verändert hast) die Implementation nicht mehr anpassen musst.

himitsu 9. Jan 2012 11:28

AW: Weglassen von Parameterlisten
 
Delphi-Quellcode:
procedure TTest.Test;
(ohne die Klammer geht es vermutlich besser)

In der Implementation kann man das halt komplett weglassen.
Genauso wie man es zwar lassen kann, aber dennoch die Werte Defaultparameter weglassen könnte, so wie es die Klassenvervollständigung macht.

Nur bei überladenen Methoden muß es vorhanden sein, da der Compiler ja sonst nicht weiß was was ist. :stupid:


Ich persönlich finde es aber besser, wenn die Parameter mit angegeben werden, denn dan sieht man innerhalb der Implementation auch, was da für Parameter vorhanden sind.
Ist besser für das Codeverständnis.


Zitat:

Zitat von Memnarch (Beitrag 1145014)
Das praktische ist wohl, dass du beim verändern der Parameter in der Deklaration(einem Parameter nen defaultwert gegeben hast oder verändert hast) die Implementation nicht mehr anpassen musst.

Ja, das wäre ein Vorteil, aber über das Refactoring stellt dieses kein Hindernis dar.
Und den Nachteil empfinde ich da als Größer, gegenüber diesem kleinem Vorteil. (wie oft liest man den Code und wie selten verändert man die Parameter)

Codewalker 9. Jan 2012 11:33

AW: Weglassen von Parameterlisten
 
Das heißt dann aber auch, dass es ein Sprach-Designelement ist und eine Abschaltung (oder wenigstens eine optionale Warnung) nicht möglich ist.

Memnarch 9. Jan 2012 11:40

AW: Weglassen von Parameterlisten
 
@Himitsu: ja, seit dem es refactoring gibt ist es theorethis überflüssig.
Die Frage ist: seit wann ist das möglich?(kurzschreibvariante). Seit wann gibt es refactoring? und seit wann gibt es Autocomplete?

In erster linie, hätte man ja auch ohne umfassende IDE so eine möglichkeit schneller zu schreiben.


MFG
Memnarch

angos 9. Jan 2012 13:39

AW: Weglassen von Parameterlisten
 
diese Kurzschreibung ist zumindest schon in D7 vorhanden...ich nutz es aber auch nicht.

Gruß

implementation 9. Jan 2012 15:34

AW: Weglassen von Parameterlisten
 
Grad mal mit dem FPC getestet. Im
Delphi-Quellcode:
{$mode delphi}
klappt's, im
Delphi-Quellcode:
{$mode objfpc}
nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 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