Riesco a rivedere il codice che assomiglia spesso a questo:
class MyClass1 {
constructor MyClass(initialiseParam1: Object) {
// do something with initialiseParam1
}
initialiseStep2() {
// do some more initialisation
}
}
Per utilizzare MyClass1
devi fare due passaggi, prima per creare un oggetto e il secondo per chiamare il metodo initialiseStep2
.
Un'altra variante della stessa idea è la seguente:
class MyClass2 {
doSomethingPart1() {
// part of some action
}
doSomethingPart2() {
// complete the same action
}
}
E per fare un uso singolo, devi chiamare due metodi separati.
Quello che non mi piace molto di entrambi è che un utente di questa classe ha bisogno di conoscenze interne su come usarlo e uno dei grandi obiettivi di design per cui combatto è quello di creare un'interfaccia pubblica in modo che è impossibile abusarne. Ad esempio, dovresti ottenere un errore di compilazione se fai qualcosa di stupido.
Ecco perché cerco di progettare in modo che qualsiasi cosa tu voglia fare sia una singola azione. Nessuna procedura di follow-up, nessuna configurazione di follow-up di un oggetto già costruito.
Spiegando questo ai miei colleghi vorrei fornire loro alcuni principi di progettazione con un nome e buoni esempi e spiegazioni su internet, ma fino ad ora non sono riuscito.
Qualcuno è a conoscenza di un simile principio?