Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Methoden-Deklaration vorgeben? (https://www.delphipraxis.net/176115-methoden-deklaration-vorgeben.html)

Der schöne Günther 13. Aug 2013 20:39

AW: Methoden-Deklaration vorgeben?
 
Tippen an sich sollte man noch jedem zutrauen können :-D

Es sollte ja nicht darum gehen, weniger Tasten drücken zu müssen, sondern das ganze leichter wartbar zu machen und die Gelegenheit hier etwas falsch oder uneinheitlich zu machen zu entfernen. Wenn ich mittels Interface oder Oberklasse die Signatur schon vorgebe (wie z.B. bei Sir Rufo) erreiche ich das ja. Nur meiner Meinung nach für so klitzekleine Dinge wie in meinem Beispiel trotzdem etwas ... oversized.

In zwei Jahren hat sich das ganze zwar garantiert dermaßen aufgebläht dass ich weinend am Boden liege und jammere "Warum habe ich nicht gleich auf ihn gehört", aber trotzdem :spin:

Furtbichler 13. Aug 2013 20:43

AW: Methoden-Deklaration vorgeben?
 
Zitat:

Zitat von BUG (Beitrag 1224660)
Das Problem war imho nicht...

Dummdidumm: Wie man vom Thema abweichen kann.. Hast Recht.
Aber falsch ist die Vorgehensweise trotzdem. So. ;-)

Bei VS bzw. Resharper geht das ganz einfach:
Code:
class MyNewClass : IMyMethod{}
ALT-Enter, Enter, fertig (Refactoring "Implement Methods" wird ausgeführt). Gibts da was für Delphi?

Zitat:

Zitat von Der schöne Günther (Beitrag 1224662)
Nur meiner Meinung nach für so klitzekleine Dinge wie in meinem Beispiel trotzdem etwas ... oversized.

Falsche Meinung. :mrgreen:

Gewöhne Dir das einfach an. Factories sind soooo praktisch und dir wird alle Nase lang etwas über den Weg laufen, wo Du anhand eines Tokens (String, Enum, sonstewas) eine Methode aufrufen musst.

BUG 13. Aug 2013 20:46

AW: Methoden-Deklaration vorgeben?
 
Zitat:

Zitat von NamenLozer (Beitrag 1224661)
Wenn dann würde sich vielleicht eher dieses Pattern anbieten, wo man statt die Parameter einzeln zu übergeben, ein einziges Objekt übergibt, das alle Parameter beinhaltet...

Natürlich ... und da es sich anscheinend um Netzwerkpaketen handelt, könnte so eine Klasse/Record eventuell sogar schon existieren :mrgreen:

Der schöne Günther 13. Aug 2013 21:11

AW: Methoden-Deklaration vorgeben?
 
Zitat:

Zitat von Furtbichler (Beitrag 1224665)
Gibts da was für Delphi?

Interfaces in Delphi habe ich mir immer noch nicht angeschaut, aber ich meine Vorgaben vom zu implementierenden Interface auf Methoden von aggregierten Objekten delegieren.

Zitat:

Zitat von Furtbichler (Beitrag 1224665)
Falsche Meinung. :mrgreen: Gewöhne Dir das einfach an.

Ich versuchs. Später rächt sich das immer :oops:

jaenicke 13. Aug 2013 22:37

AW: Methoden-Deklaration vorgeben?
 
Zitat:

Zitat von Furtbichler (Beitrag 1224665)
Bei VS bzw. Resharper geht das ganz einfach:
Code:
class MyNewClass : IMyMethod{}
ALT-Enter, Enter, fertig (Refactoring "Implement Methods" wird ausgeführt). Gibts da was für Delphi?

Nicht für Delphi, sondern direkt schon in Delphi drin:
Klassendeklaration hinschreiben inkl. end, vor dem end bleiben, Strg + Leertaste, zu implementierende Methoden des Interfaces aus der Liste auswählen, Enter (jetzt stehen sie da inkl. public), Strg + Shift + C, fertig. ;-)

Sir Rufo 14. Aug 2013 00:45

AW: Methoden-Deklaration vorgeben?
 
@jaenicke :thumb:

Obwohl mich das
Delphi-Quellcode:
public
eher stört, das verleitet einige statt dem Interface, die Klassen-Instanz zu benutzen.

Also definiere ich die Klassen entweder im
Delphi-Quellcode:
implementation
-Abschnitt (Zugriff dann über eine Factory) oder deklariere diese Methoden als
Delphi-Quellcode:
protected
.

sx2008 14. Aug 2013 01:57

AW: Methoden-Deklaration vorgeben?
 
Mit geschachtelten Funktionen lässt sich das "Problem" lösen:

Delphi-Quellcode:
procedure AllInOneHandler(input1: Integer; input2: TSomeClass; out output: Double);

  procedure proc1; // hat Zugriff auf die Parameter der äusseren Funktion oder Methode
  begin
  end;
 
  procedure proc2; // so was von dry - dryer geht's nicht
  begin
  end;

begin
  if ankommendesPaket.commandStr = 'zooBesuch' then
    proc1
  else if ankommendesPaket.commandStr = 'zirkusBesuch' then
    proc2
  else
    ...
end;

jaenicke 14. Aug 2013 05:27

AW: Methoden-Deklaration vorgeben?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1224682)
Obwohl mich das
Delphi-Quellcode:
public
eher stört, das verleitet einige statt dem Interface, die Klassen-Instanz zu benutzen.

Wenn sie denn verfügbar wäre. Bei den Interfaces, die ich im Moment implementiere, ist in der Schnittstelle nach außen nur das Interface verfügbar.
Das Interface deklarierst du ja hoffentlich nicht in der selben Unit wie das Objekt, oder?
Wer dann die Unit mit dem Objekt extra nimmt, ist selbst schuld...

Nebenbei kann man bei XE4 anders als früher auch problemlos den Interface-Zeiger wieder auf die Objektinstanz casten (mit as).

Auch noch nebenbei: Das Überschreiben von Elternmethoden funktioniert analog inkl. override dahinter. ;-)

Das public wieder zu entfernen ist jedenfalls deutlich weniger Arbeit als alles manuell zu kopieren usw. ;-)

Furtbichler 14. Aug 2013 07:51

AW: Methoden-Deklaration vorgeben?
 
Zitat:

Zitat von jaenicke (Beitrag 1224673)
Nicht für Delphi, sondern direkt schon in Delphi drin:...

Na dann hätten wir ja das Problem
Zitat:

Zitat von NamenLozer (Beitrag 1224661)
...Ändert allerdings auch nichts daran, dass man die Parameterdeklaration bei jeder Methode wieder hinschreiben muss.

gelöst hätten.

Interface-Methoden sollten public sein, schließlich verwendet man sie ja 'öffentlich', auch wenn die Klasse an sich nicht verfügbar sein sollte.

jaenicke 14. Aug 2013 08:43

AW: Methoden-Deklaration vorgeben?
 
Zitat:

Zitat von Furtbichler (Beitrag 1224693)
Interface-Methoden sollten public sein, schließlich verwendet man sie ja 'öffentlich', auch wenn die Klasse an sich nicht verfügbar sein sollte.

Ich schreibe die immer unter protected um zu verhindern, dass man aus Versehen die Klasse als Klasse nutzt, wenn man diese noch nicht kennt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr.
Seite 3 von 3     123   

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 by Thomas Breitkreuz