Durante la progettazione di una classe, come decidi quando i tutti metodi sovrascritti dovrebbero chiamare super
o quando nessuno dei metodi sottoposti a override deve chiamare super
? Inoltre, è considerata una cattiva pratica se la logica del codice richiede una combinazione di metodi superati e non superati come l'esempio di Javascript qui sotto?
ChildClass = new Class.create(ParentClass,
{
/**
* @Override
*/
initialize: function($super) {
$super();
this.foo = 99;
},
/**
* @Override
*/
methodOne: function($super) {
$super();
this.foo++;
},
/**
* @Override
*/
methodTwo: function($super) {
this.foo--;
}
});
Dopo aver approfondito gli SDK iPhone e Android, ho notato che super
deve essere richiamato su ogni metodo sovrascritto, altrimenti il programma si arresterà in modo anomalo perché qualcosa non verrebbe inizializzato. Quando viene derivato da un modello / delegato, viene superato nessuno dei metodi (ovviamente). Quindi, quali sono esattamente queste qualità "je ne sais quoi" che determinano se un tutti , nessuno o alcuni metodi sovrascritti dovrebbe chiamare super?