Se createWorld()
è veramente lungo e ho bisogno di dividerlo, posso dividerlo in createLight()
, createEarth()
, createPlants()
e createAnimals()
.
Quindi, naturalmente lo faccio:
function createLight(){
//work 1
}
function createEarth(){
//work 2
}
function createPlants(){
//work 3
}
function createAnimals(){
//work 3
}
function createWorld(){
createLight()
createEarth()
createPlants()
createAnimals()
}
Ma vedo che molti nuovi sviluppatori fanno ciò che sto provvisoriamente definendo " l'antipattern di Stairstep ". Va qualcosa come:
function createWorld(){
//create light
//work1
createEarth()
}
function createEarth(){
//work 2
createPlants()
}
function createPlants(){
//work 3
createAnimals()
}
function createAnimals(){
//work 4
}
Sono sicuro che sia peggio, ma non credo che la mia opinione da sola possa influenzare i miei colleghi. Penso che se un passo è createButterfly()
allora quella funzione non ha business chiamando createGrasshopper()
alla fine solo perché questo è il "prossimo passo".
E anche se lo chiami createButterflyThenCallCreateGrasshopper()
, è ancora una cattiva progettazione perché non puoi testare bene il codice createButterfly e quando hai diversi passaggi diventa difficile vedere dove vengono chiamate le funzioni.
Lo chiamo antipattern Stairstep perché lo penso in questo modo:
|
|createWorld(){
|
|createEarth(){
|
|createPlants(){
|createAnimals()
Ho ragione nel ritenere che questo sia un cattivo design? Perché questo è un cattivo design?