AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Offenes Array oder Set als Parameter

Offenes Array oder Set als Parameter

Ein Thema von Schwedenbitter · begonnen am 26. Apr 2016 · letzter Beitrag vom 26. Apr 2016
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: Offenes Array oder Set als Parameter

  Alt 26. Apr 2016, 13:39
Danke erstmal für die Antworten und Ideen!

Ich verstehe nicht wo hier auf einmal ein "Set" ins Spiel kommt. Ein Set ist eine Menge von mehreren Enumerationstypen von denen jedes Vorkommen ein- oder keinmal enthalten sein darf.
genau.

Ich stelle mir das in etwa so vor (=Brainstorming, kein Code) und komme deshalb auf Set:
Delphi-Quellcode:
Const
   DRV : TRect = ( Left:0; Top:0; Right:20; Bottom:20);
   Knappschaft : TRect = ( Left:20; Top:20; Right:40; Bottom:40);
   // usw. die Positionen bleiben immer gleich
Type
   TBlankPos = (DRV, Knappschaft, ...);
   TBlank = Set Of TBlankPos;

Function IsEmpty(Image: TBitmap; BarCodes: TBlank): Boolean; // Kopf sehr verkürzt
Begin
   // mache etwas ...
End;

Procedure TForm1.Bildkommtan(Image: TBitmap);
Begin
   If IsEmpty(Image, [DRV]) Then ShowMessage('Leeres Bild')
   Else ShowMessage('Bild mit Inhalt');
End;
Ein Array wäre für mich denkbar (sonst stünde es nicht in der Überschrift), aber vermutlich eher die Notlösung. Denn ich müsste die Länge festlegen, es mit Daten bestücken etc. Ich fände das als Konstante besser lesbar. Mir geht es aber eben auch hauptsächlich darum, es von vorn herein erweiterbar zu gestalten.
Alex Winzer
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.203 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Offenes Array oder Set als Parameter

  Alt 26. Apr 2016, 15:38
Erweiterbar ist genau das was Rufo vorgeschlagen hat (wobei ich einen Record als typisches POD und keine Klasse genommen hätte)*. Packe die Daten die deine Methode zum Arbeiten braucht in eine Struktur und übergib sie ihr. Braucht die Methode eines Tages mehr Daten, passt du nur diese Klasse/Record an und nicht alle hundert Aufrufe im Programm.

Das mit dem Set habe ich jetzt war verstanden, finde es trotzdem nicht gut. Jedes mal wenn etwas neues hinzu kommt musst du deinen TBlankPos-Typ anfassen.
Packst du diese Absolutwerte für ein TRect wirklich direkt in den Quellcode? Ich finde, dadurch gewinnt man nicht viel. Wenn du es zur Laufzeit machst kann dein Benutzer das z.B. auch aus einer selbst anpassbaren Datei laden und muss dich nicht jedes mal nerven wenn er es ändern will.


* Irgendeine Berühmtheit hat mal gesagt zwei Methodenparameter gehen grade noch, drei seien zu viel (Ich glaube es war Martin Fowler).
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Offenes Array oder Set als Parameter

  Alt 26. Apr 2016, 15:42
* Irgendeine Berühmtheit hat mal gesagt zwei Methodenparameter gehen grade noch, drei seien zu viel (Ich glaube es war Martin Fowler).
Martin C. Fowler, "Clean Code", S. 73:
Zitat:
Funktionen, die drei Argumente übernehmen, sind erheblich schwerer zu verstehen als Dyaden. Die Probleme (...) werden mehr als verdoppelt.
Und auf Seite 74 werden die von Sir Rufo vorgeschlagenen "Argument Objekte" beschrieben. Sie sind keine Schummelei
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano
Online

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
195 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Offenes Array oder Set als Parameter

  Alt 26. Apr 2016, 17:52
Ich bekomme immer wieder bei Refactoring das Grausen, wenn ich functions/procedures mit 15-20 Parametern sehe und diese in den Sourcen eines Projektes auch hunderte Male aufgerufen werden. Das ist eine Orgie, wenn mal ein Parameter geändert/zugefügt/gelöscht wird ...
Ich bevorzuge auch records als Parameter, wenn es mehr als drei Parameter werden sollen.
Thomas Forget
  Mit Zitat antworten Zitat
Antwort Antwort

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 22:05 Uhr.
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-2025 by Thomas Breitkreuz