Usando le condizioni ancora e ancora o semplicemente creando diversi metodi [duplicato]

0

Ho un metodo,

function DoThis(bool isHuman)
{
  // Do something

  if(isHuman)
  {
    //call his dad
  }
  else
  {
    //its a animal - let animal resuce know
  }


  // add some blah blah code
  // some more blah blah code

  if(isHuman)
  {
    //call his mother
  }
  else
  {
    heheeee now heeeheee
  }

  // more code



}

Devo continuare a utilizzare le condizioni ancora e ancora o semplicemente creare diversi metodi.

    
posta Mathematics 15.01.2015 - 11:19
fonte

3 risposte

3

L'ovvio refactoring è di rimuovere la duplicazione in questo modo:

  if(isHuman)
  {
    //call his dad
    doCommonStuff()
    //call his mother
  }
  else
  {
    // do animal stuff
    doCommonStuff()
    // do more animal stuff
  }

Non aver paura di introdurre metodi ben definiti, anche se vengono chiamati solo una volta. È il miglior modo per aumentare la leggibilità.

    
risposta data 15.01.2015 - 11:30
fonte
1

Beh, se ha senso, puoi probabilmente usare il modello di visitatore o qualche altro trucco con doppia spedizione .

Nota, questi metodi richiedono l'invio di un oggetto poiché si basano sull'overloading delle funzioni. Puoi forse usare isHuman per creare un oggetto fittizio solo per il dispacciamento, ma suppongo che se guardi il tuo codice su una scala più grande, probabilmente trovi un oggetto che vuoi inviare al posto di isHuman e può essere utilizzato per il modello di progettazione.

Se non hai familiarità con l'overloading delle funzioni, potresti voler iniziare a conoscere vtable .

    
risposta data 15.01.2015 - 11:39
fonte
0

Il modello del modello di modello si applica a tali situazioni.

void DoThis() {
  FirstSpecificPart();
  common code
  SecondSpecificPart();
}

void Human.FirstSpecificPart() {
  call(dad)
}
void Animal.FirstSpecificPart() {
  call(animal shelter)
}
    
risposta data 15.01.2015 - 13:11
fonte

Leggi altre domande sui tag