Results 1 to 11 of 11

Thread: Procedures in procedures. Voor- en nadelen?

  1. #1
    Bad Brains Tribute
    Join Date
    Jan 2004
    Location
    Tilburg
    Posts
    69

    Procedures in procedures. Voor- en nadelen?

    Hoi,
    Ik was een procedure aan't maken. Maar deze werd wat lang en onoverzichtelijk. Dus ik dacht, laat ik 'm in stukjes kappen. Dat kan ik in princiepe op 2 manieren doen dacht ik (ik heb geen Delphi hier):


    Code:
    Procedure AA.Totaal;
    begin
    end;
    
    Procedure AA.B;
    begin
    end;
    
    Procedure AA.C;
    begin
    end;
    
    etc..
    
    of
    
    Procedure AA.Totaal;
    
      Procedure B;
      begin
      end;
    
      Procedure C;
      begin
      end;
    
    begin
    end;
    etc..

    Nu heb ik de procedures A en B alleen maar nodig in AA.Totaal.

    De eerste manier vind ik persoonlijk stukken overzichtelijker. Maar wat is het nadeel van deze manier? Is het slomer? Met andere woorden, wat zijn de voor en nadelen van beide manieren?

    (Ik heb geprobeert om 't bij zoeken te vinden. Maar daar kon ik 't niet vinden.)

  2. #2
    Yay: Student(je) af
    Join Date
    Jun 2003
    Location
    Harderwijk
    Posts
    2,621
    Het voordeel van de tweede manier is dat je ze inline declareert.
    Op die manier kan je er alleen vanuit de procedure / functie waar ze ?¡n staan bij. Als je B en C nergens anders gebruikt, is het een goed idee om het zo te doen.
    Natuurlijk kun je ook zoals in het bovenste voorbeeld een class AA maken met een public method A en private methods B en C. Ook op die manier hou je voor alle "stukjes" de scope zo klein mogelijk, wat je performance ten goede komt.
    My software never contains bugs. Perhaps just undocumented features.

  3. #3
    Het nadeel is dat de functies niet herbruikbaar zijn en dat ze op een andere manier worden aangeroepen. Ze zijn dus niet compatibel met 'of object'.

    /edit: Typo
    Last edited by Lord Larry; 18-Sep-04 at 19:56.
    We adore chaos because we like to restore order - M.C. Escher

  4. #4
    Bad Brains Tribute
    Join Date
    Jan 2004
    Location
    Tilburg
    Posts
    69
    Wat is daar erg aan Lord Larry?

    Een ander voordeel aan de tweede manier is ook dat ik geen variabel mee hoef te geven bedenk ik me nu.

    "Ook op die manier hou je voor alle "stukjes" de scope zo klein mogelijk, wat je performance ten goede komt."

    Wat bedoel je hier mee CompuChip?

  5. #5
    Daar is verder niets ergs aan. Maar een functies/procedures declareren binnen een Inline-procudure, is alleen herbruikbaar binnen die procedure en niet binnen je programma.

    Het is misschien een voordeel dat je nu geen variabelen etc, mee hoeft te geven, maar als het om bijvoorbeeld een percentage-berekening zou gaan, dan zou ik er "express" voor kiezen om deze in een aparte unit te zetten. Waar je twee variabelen aan meegeeft, en welke er dan één retourneert. Dit omdat dit zeker een functie is die je vaker zult gebruiken, in verschillende procedures.

    Ik gebruik eigenlijk alleen inline procedures, als ik er zeker van ben dat ik er maar één keer gebruik van hoef te maken. Of als ik een grote lap code heb in een procedure die je ook in verschillende stukken kan opdelen. Om het geheel overzichtelijk te maken

  6. #6
    Als de code zo specifiek is dat je het alleen daar gaat gebruiken, dan is een inline procedure zeker een goede optie. Het is dan namelijk heel duidelijk dat je die procedure alleen binnen de hoofdprocedure gebruikt. Mocht je zo'n inline procedure alsnog ergens anders willen gebruiken, dan is deze snel genoeg losgetrokken tot zelfstandige procedure.
    Een ander reeds genoemd voordeel is dat je bij de variabelen van de hoofdprocedure kan, zelfs Result. Dit kan handig zijn. Overigens kun je daar nog een onderscheid in maken. In de volgende procedure kan de Sub-procedure wel de variabele 'i' aanspreken, maar niet de variabele 'j':
    Code:
    procedure Hoofd;
    var
      i: Integer;
    
      procedure Sub;
      begin
        Inc(i);
      end;
    
    var
      j: Integer;
    begin
      Hoofdcode;
    end;
    1+1=b

  7. #7
    Hoi,

    Ikzelf gebruik zoveel mogelijk lokale procedures en functies (wegens de beperkte scope).
    Er is echter 1 nadeel waar in regelmatig tegenaan loop: die lokale procedures/functies kunnen blijkbaar niet meegegeven worden als parameter. Als je een procedurenaam wilt meegeven als parameter (aan een andere lokale procedure) mag dat dus blijkbaar geen lokale procedure zijn. Waarom weet ik niet. Spijtig.

  8. #8
    Bad Brains Tribute
    Join Date
    Jan 2004
    Location
    Tilburg
    Posts
    69
    Ik dank u allen! Ik ga dus voor de inline-procedure.

  9. #9
    SillyMember Dirk Andries's Avatar
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,715
    Originally posted by Dany
    ...Er is echter 1 nadeel waar in regelmatig tegenaan loop: die lokale procedures/functies kunnen blijkbaar niet meegegeven worden als parameter....
    Heeft te maken met het stack frame (activation record). Zie ook.
    All methodologies are based on fear. -- Kent Beck.

  10. #10
    Hoi,
    Waarom praten jullie eigenlijk over "inline" procedures in plaats van "lokale" procedures?

    Ik dacht dat een "inline" procedure eigenlijk niet echt "aangeroepen" werd, maar dat de code iedere keer (bij iedere "call") in de executable gejongd werd (in plaats van 1 keer voor een "echte" procedure).

    Een "lokale" procedure is wel degelijk een "normale" procedure (wordt dus maar 1x in de code gejongd en meerdere malen "aangeroepen"), buiten het feit dat ze in een andere procedure gedeclareerd is. (Je kan natuurlijk waarschijnlijk ook een lokale procedure "inline" declareren om het wat ingewikkelder te maken )

    Ik denk dat bovenstaande verhalen dus gaan over "lokale" procedures in plaats van "inline" procedures.

  11. #11
    Klopt Dany, maar aangezien Delphi die C++ inline dingen niet kent worden die namen wel eens verwisseld.
    We adore chaos because we like to restore order - M.C. Escher

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Array van procedures
    By Metalheart in forum Algemeen
    Replies: 3
    Last Post: 01-Jul-04, 08:53
  2. Threads en procedures
    By cpri in forum Algemeen
    Replies: 1
    Last Post: 18-Apr-03, 10:16
  3. Nieuw controversieel topic : stored procedures Y/N
    By juulepuul in forum Databases
    Replies: 4
    Last Post: 03-Nov-02, 21:23
  4. Stored Procedures en Views
    By Tommy in forum Databases
    Replies: 12
    Last Post: 18-Jun-02, 23:59
  5. Moeilijk: procedures achterhalen van classes
    By AndrewDynamo in forum Algemeen
    Replies: 5
    Last Post: 18-May-02, 12:58

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •