Fare alcuni metodi per lo più contengono chiamate di metodo, mentre altri che fanno "il livello più basso" funzionano [duplicato]

3

Così ci ho pensato, e non so se è incluso o meno in alcun metodo.

Penso che i vantaggi di questo stile di codifica siano che, al livello più basso, il codice è estremamente verificabile, e quindi anche i test di integrazione dovrebbero essere molto facili da costruire.

Penso anche che questo renderebbe il codice più leggibile e l'UML sarebbe compreso più velocemente.

Quindi ecco il mio esempio:

class CoolObject{
var member1; //needed for instance in lifecycle events
var member2; //same comment

   //This method could be for instance an event handler
   //Notice this contains only assignments and method calls. No library calls or lower level stuff
   [public] method high_level(params...){ 
    var local_var1;
    var local_var2;
    local_var1 = call method lower_level1(param1,param2);
    local_var2 = call method lower_level2(param1, local_var1);
    member1 = call method lower_level3(local_var2);
   }

   //Notice this contains only library calls and lower level processing
   [private] method lower_level1(param1, param2){
    return param1 + param2 + libraryXXY123.function142(current_date);
   }

   //Notice this contains only library calls and lower level processing
   [private] method lower_level2(param1, param2){
     var return_value;
     loop over param2{
        if(condition){
           add param1 to return_value;
        }
     }
     return return_value + libraryASDF123.function3132(system_user);

   }

}

Si noti che questo non è scritto in alcuna lingua specifica, poiché volevo solo illustrare il concetto.

Quindi conosci alcune metodologie che usano questo o che ti mettono in guardia? Per favore, elabora la risposta, poiché ritengo che sarebbe una buona idea, e vorrei che fosse confermata, o il contrario.

    
posta vlad-ardelean 03.10.2013 - 16:41
fonte

3 risposte

8

In parole semplici:

  • Questa è una buona pratica di programmazione strutturata.
  • OOP si basa sulla programmazione strutturata, il che significa che il codice all'interno di una classe è solitamente un codice di programmazione strutturato.
  • Il tuo campione non è un'idea buona o cattiva OOP di per sé, ma piuttosto una buona idea di programmazione strutturata .
  • Un buon codice OOP di solito si basa su un buon codice di programmazione strutturato.
  • Il tuo codice mi sembra OK.
risposta data 03.10.2013 - 17:08
fonte
2

Si chiama "layered design".

L'idea è che la progettazione del tuo sistema sia divisa in "strati". Ogni livello fornisce un'interfaccia per il livello sopra di esso. Ogni livello chiama solo i metodi dal livello immediatamente sottostante.

Il riferimento canonico a questo approccio è il testo di Dijkstra "La struttura del sistema THE Multiprogramming" . È necessario leggere in questa racchetta.

    
risposta data 03.10.2013 - 21:34
fonte
-1

Più della vera codifica, l'importante è trovare una buona struttura di programmazione. Questo è qualcosa che il tuo programma ha fatto, perché le cose sono ben strutturate e seguono logicamente da un passaggio all'altro. Potrebbe gettare una buona base per programmi simili, e se ha bisogno di essere cambiato, la sua buona struttura rende più facile cambiare rispetto a quanto sarebbe altrimenti.

    
risposta data 04.10.2013 - 00:01
fonte