AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Procedure in Procedure

Ein Thema von Metschu · begonnen am 31. Mär 2014 · letzter Beitrag vom 31. Mär 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#11

AW: Procedure in Procedure

  Alt 31. Mär 2014, 11:21
Stimmt. Ansichtssache

Aber in dem Fall hätte man die innere Procedure komplett auslagern können, da ja nicht auf Variablen der äusseren Procedure zurückgegriffen wird.
Welchen sinn macht das ?
Wenn diese Procedure im gesamten Code nur einmal verwendet wird.
Irgendwie unlogisch oder?

gruss
Wie ich oben schon geschrieben hatte, finde ich es unübersichtlich diesen Code als Nested Procedure zu definieren. Daß dies eine Ansichtssache ist, stimme ich zu.

Aber Unlogisch finde ich es nicht, die Funktion komplett auszulagern und nicht Nested zu verwenden. Auch wenn diese nur einmal verwendet wird. Wer sagt, daß dieser Codeabschnitt nicht doch noch irgendwann ein zweites mal mal verwednet werden soll?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

AW: Procedure in Procedure

  Alt 31. Mär 2014, 11:24
Ist es noch immer so, das lokale Prozeduren einen heftigen Aufruf-Penalty innehaben ? Ich meine mich zu erinnern, das dem so war und ich deswegen diese Konstrukte meide wie die Pest...

Ansonsten habe ich schon genug Beispiele gesehen, in denen lokale Prozeduren ein Alptraum an Unübersichtlichkeit produziert haben (Prozedur, 40k Zeilen lang (an sich schon ein Problem), darin eingebaut 15 lokale Prozeduren im 100-Zeilen-Bereich) - schier undurchdringlich, das Dickicht )
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#13

AW: Procedure in Procedure

  Alt 31. Mär 2014, 11:25
Ich finde immer, bei normale privaten Methoden ist klarer, welchen Scope die lokalen Variablen haben.
Bei Nested procedures hab ich da immer so meine Probleme. Klar, technisch ist ganz klar, welchen Scope die Variablen haben. Es lässt sich aber etwas mühsam aus dem Quelltext rauslesen.
Das ist mein Hauptgrund, eher eine private Methode als eine nested procedure zu verwenden. Auch wenn sie nur 1x aufgerufen wird.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#14

AW: Procedure in Procedure

  Alt 31. Mär 2014, 11:29
Auslagern gut und schön, aber dann auch bitte richtig!
Also XmlParser und TrvDoc gehören gefälligst in den Parametern übergeben.
Wer sagt, daß ich das nicht so gemacht hätte

Aber auch das ist Ansichtssache. XmlParser und TrvDoc sind anscheinend in TFrmMain deklariert. Warum sollte ich keine private Methode zur Form schreiben, die direkt auf diese deklarationen zugreift?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#15

AW: Procedure in Procedure

  Alt 31. Mär 2014, 13:46
Prozeduren/Functionen in Prozeduren sind an sich eine feine Sache. Ob der obere Code nicht auch ohne eine ausgekommen wäre, ist eine Ansichtssache, ich hätte vermutlich es auch so gemacht. Im Grunde nutze ich diese Möglichkeit sogar sehr oft. Der Grund ist simpel - zuerst wie gesagt, man kann es auch über eine Prozedur lösen, aber wenn man sich die zweite Prozedur anguckt, ist sie allgemein gehalten, hat also keinen direkten Bezug zu TFrmMain. Allgemeine Prozeduren kann man immer wieder gebrauchen, ob im gleichen Projekt oder in später in anderen. Hat man alles in einer Prozedur, ist die Prozedur mit den Bezeichnungen andere Komponenten "verunreinigt". Spätere Nutzung ist somit schwieriger, man muss die Prozedur denn erst "bereinigen". Ist sie allgemein gehalten, kann man sie immer wieder nutzen.

Hat man eine allgemeine Prozedur, kann man sie auch direkt in die Unit packen. Wenn aber nur die eine einzige Prozedur sie nutzt, dann packe ich sie auch in die Prozedur. Das erhöht die Lesbarkeit, ich weiß, dass nur die Prozedur die andere Prozedur nutzt.

Womit die erste Aussage im Grunde stimmt: sowas erhöht die Übersichtlichkeit.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#16

AW: Procedure in Procedure

  Alt 31. Mär 2014, 13:53
Aber eigentlich ist es schon unübersichtlich, die Logik in der Form unterzubringen. Hätte man dafür eine eigene Klasse, wäre dort die private Methode sehr gut aufgehoben. So machen wir das jedenfalls.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#17

AW: Procedure in Procedure

  Alt 31. Mär 2014, 14:00
Bei kleines Funktionen/Proceduren nutze ich sowas manchmal, um "klarzustellen", daß diese eingebette Funktionen/Proceduren ausschließlich zur Übergeordneten Funktionen/Proceduren/Methode gehört.
[edit] Jupp, im Prinzip ist das so eine private Methode der übergeordneten Prozedur.

Und der einzige "Vorteil" ist, daß man direkten Zugriff auf lokale Variablen der übergeordneten Methode besitzt. (auf Die, welche davor deklariert sind)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Procedure in Procedure

  Alt 31. Mär 2014, 14:51
Ich nutze so etwas auch öfter wegen der (für mich) besseren Übersichtlichkeit:

Delphi-Quellcode:
procedure DoSommething;
 procedure DoA;
 ...
 procedure DoB;
 ...
 procedure DoC;
 ...
begin
 DoA;
 DoB;
 DoC;
end;
Benötigte Parameter übergebe ich meist beim Prozedur-Aufruf (so dass ich die Unterprozeduren generell auch auslagern könnte).

Wie schon geschrieben, letztlich ist das Geschmackssache und ich entscheide das auch von Fall zu Fall unterschiedlich.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#19

AW: Procedure in Procedure

  Alt 31. Mär 2014, 15:12
Wobei inzwischen (seit über 5 Jahren) auch sowas ginge:
Delphi-Quellcode:
procedure DoSommething;
begin
  {$REGION 'DoA'}
  ...
  {$ENDREGION}
  {$REGION 'DoB'}
  ...
  {$ENDREGION}
  {$REGION 'DoC'}
  ...
  {$ENDREGION}
end;
Regionen lassen sich ja zusammenklappen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:00 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