AGB  ·  Datenschutz  ·  Impressum  







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

Geschachtelte Prozeduren/Funktionen

Ein Thema von ToFaceTeKilla · begonnen am 5. Jun 2008 · letzter Beitrag vom 5. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#1

Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:02
Hiho,

sagt mal welchen Sinn macht es geschachtelte Prozeduren/Funktionen zu verwenden? Also damit meine ich sowas:
Delphi-Quellcode:
procedure OberProzedur (....);
  procedure UntergeordneteProzedur(...);
  var (...)
  begin
   //mach was
  end;

  function UntergeordneteFunktion(...):(...);
  begin
  //mach auch irgendwas
  end;

var //von OberProzedur
(..)
begin
...
end;
Einen anderen Nutzen, außer dass man sich die Deklaration spart, kann ich nicht erkennen. Sind solche Konstrukte schneller, oder was bringts?

MfG
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:05
Die Prozedur/Funktion hat nur einen lokalen Scope (Gültigkeitsbereich)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:05
Zum einen sind sie außerhalb der Funktion nicht verfügbar, zum anderen kann man auch direkt auf darüber deklarierten Variablen und den Parametern der Funktion zugreifen, ohne diese selbst wieder als Parameter mitgeben zu müssen. Schneller dürften sie nicht sein, der Compiler dürfte allerhöchstens mehr zu Inlining tendieren.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:06
Der Sinn ist, dass man innerhalb der äußeren Methode die innere mehrmals aufrufen kann. (auch rekursiv)
Und das Ganze ohne, dass sie außerhalb sichtbar ist.Reduzierung von Sichtbarkeit auf das allernotwendigste ist einer der Grundsätze beim Programmieren...
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:06
Ist ein Code in Unterfunktionen unterteil, kann der Compiler den Code teilweise besser optimieren. Und wenn diese Unterfunktionen nur von einer Routine benötigt werden kann man sie als Unterroutinen implementieren, so dass sie von anderen Routinen nicht sichtbar sind.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:08
Hallo,

ich mache sowas z.B. bei rekursiven Funktionen. Außen die "sichtbare" Funktion inklusive Vorbereitung etc. und innen die Funktionen, die rekursiv aufgerufen werden.

MfG. Andreas
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#7

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:40
Noch ein zusätzlicher Aspekt:

Ich verwende dieses Konstrukt insbesondere auch dann, wenn die Prozedur sonst zu umfangreich werden würde. Die übergeordnete Prozedur enthält dann im Extremfall nur wenige Zeilen, die die untergeordneten Procs/Funcs nacheinander aufruft. Im Sinne von: Die Aufgabe der übergeordneten Prozedur in Teilaufgaben gliedern und für jede Teilaufgabe eine eigene untergeordenet Proc/Func schreiben - ich finde das dann übersichtlicher.

PS: Habe irgendwo mal aufgeschnappt, dass eine (gute) Proc/Func aus maximal 20-30 Zeilen bestehen soll?!
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:42
Zitat von taaktaak:
PS: Habe irgendwo mal aufgeschnappt, dass eine (gute) Proc/Func aus maximal 20-30 Zeilen bestehen soll?!
Man sagt, sie sollte auf eine Bildschirmseite passen. Aber da moderne IDEs das Codefolding beherrschen, kann man dieses Limit wohl langsam vergessen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 12:47
Zitat von Andreas H.:
Hallo,

ich mache sowas z.B. bei rekursiven Funktionen. Außen die "sichtbare" Funktion inklusive Vorbereitung etc. und innen die Funktionen, die rekursiv aufgerufen werden.

MfG. Andreas
Wie muss ich mir das vorstellen?
So?
Delphi-Quellcode:
function Master(...):(...);
  function Slave1(...):(...);
  begin
    function Master(...):(...);
  end;
var //Master
usw.
oder so:
Delphi-Quellcode:
function Master(...):(...);
  function Slave1(...):(...);
  begin
    function Slave1(...):(...);
  end;
var //Master
usw.



Zitat von taaktaak:
Ich verwende dieses Konstrukt insbesondere auch dann, wenn die Prozedur sonst zu umfangreich werden würde... ich finde das dann übersichtlicher.
Also ich dazu hab ichs auch schon verwendet
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Geschachtelte Prozeduren/Funktionen

  Alt 5. Jun 2008, 13:07
Zitat von ToFaceTeKilla:
Wie muss ich mir das vorstellen?
So
Delphi-Quellcode:
function Master(...):(...);
  function Slave1(...):(...);
  begin
    function Slave1(...):(...);
  end;
var //Master
usw.
Auch sehr schön dafür:
Delphi-Quellcode:
procedure Master;
 procedure Nested
 begin
   ...
 end;
begin
  if Bedingung then
  begin
    Nested;
    //und jetzt etwas anders
  end
  else
  begin
    //zuerst etwas anders
    Nested;
  end;
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:24 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