Programmazione
Per capire come programmare a oggetti con javascript, partiremo scrivendo un programma "tradizionale" per calcolare area e parimetro di un quadrato e poi lo trasformeremo in un programma a oggetti.
Nonostante le versioni più recenti di javascript supportino la programmazione a oggetti (certo, in una forma alquanto discutibile) molti sviluppatori utilizzano ancora la programmazione procedurale, che in effetti era l'unica forma supportata in origine.
Perché non abituarsi a programmare a oggetti anche con javascript? Vediamo come.
... e se in futuro mi verrà chiesto di aggiungere altre cose, tipo il calcolo della diagonale (o tantissime altre cose che possono venire in mente) le metterò nel prototipo Quadrato.
Tutte le funzioni di validazione di dati finiranno invece ammucchiate nel prototipo DataValidator, così tutti gli sviluppatori sapranno che troveranno lì dentro tutto quello che serve per validare i dati.
Quindi ogni volta che un programmatore del team, da qualche parte nel software, avrà bisogno di un quadrato, comincierà prima di tutto a creare un quadrato con l'apposito prototipo e poi esplorerà tutti i metodi a disposizione per capire se c'è già quello che gli serve per giungere ai risultati richiesti. Se non c'è ancora, lo aggiunge oppure chiede al team di sviluppatori del Quadrato di aggiungerlo, perché magari solo loro hanno la specializzazione universitaria che serve per lavorare sui quadrati ed è perciò compito loro fare in modo che tutti gli altri sviluppatori hanno tutto quello che serve per lavorare con i quadrati.
In questo modo il Quadrato diventa sempre più maturo, più intelligente, praticamente autocosciente e gli sviluppatori che arriveranno per ultimi, quando il cuore del programma sarà completo, non dovranno più preoccuparsi di inventare la ruota: si potranno preoccupare di modellare il front-end.
Più elegante! Più strutturato! Più moderno! Più progressista!
**Modificato dall'autore il 22.02.2020 20:20**
function calcolaPerimetroQuadrato(lato){
ensureQuadratoIsValid(lato);
return lato * 4;
}
function calcolaAreaQuadrato(lato){
ensureQuadratoIsValid(lato);
return lato * lato;
}
function ensureQuadratoIsValid(lato){
if(!isANumberGreaterThanZero(lato)){
throw new Error("Il lato di un quadrato deve essere un numero superiore a 0");
}
}
function isANumberGreaterThanZero(number){
return !isNaN(number) && number > 0;
}
var lato;
while(!isANumberGreaterThanZero(lato)){
lato = prompt("Inserisci il lato del quadrato. Deve essere un numero superiore a 0.");
}
console.log("Il perimetro del quadrato è " + calcolaPerimetroQuadrato(lato));
console.log("L'area del quadrato è " + calcolaAreaQuadrato(lato));Nonostante le versioni più recenti di javascript supportino la programmazione a oggetti (certo, in una forma alquanto discutibile) molti sviluppatori utilizzano ancora la programmazione procedurale, che in effetti era l'unica forma supportata in origine.
Perché non abituarsi a programmare a oggetti anche con javascript? Vediamo come.
function Quadrato(lato){
var validator = new DataValidator();
if(!validator.isANumberGreaterThanZero(lato)){
throw new Error("Il lato di un quadrato deve essere un numero superiore a 0");
}
this.lato = lato;
this.getPerimetro = function(){
return this.lato * 4;
}
this.getArea = function(){
return this.lato * this.lato;
}
}
function DataValidator(){
this.isANumberGreaterThanZero = function(number){
return !isNaN(number) && number > 0;
}
}
var lato;
var dataValidator = new DataValidator();
while(!dataValidator.isANumberGreaterThanZero(lato)){
lato = prompt("Inserisci il lato del quadrato. Deve essere un numero superiore a 0.");
}
var quadrato = new Quadrato(lato);
console.log("Il perimetro del quadrato è " + quadrato.getPerimetro());
console.log("L'area del quadrato è " + quadrato.getArea());... e se in futuro mi verrà chiesto di aggiungere altre cose, tipo il calcolo della diagonale (o tantissime altre cose che possono venire in mente) le metterò nel prototipo Quadrato.
Tutte le funzioni di validazione di dati finiranno invece ammucchiate nel prototipo DataValidator, così tutti gli sviluppatori sapranno che troveranno lì dentro tutto quello che serve per validare i dati.
Quindi ogni volta che un programmatore del team, da qualche parte nel software, avrà bisogno di un quadrato, comincierà prima di tutto a creare un quadrato con l'apposito prototipo e poi esplorerà tutti i metodi a disposizione per capire se c'è già quello che gli serve per giungere ai risultati richiesti. Se non c'è ancora, lo aggiunge oppure chiede al team di sviluppatori del Quadrato di aggiungerlo, perché magari solo loro hanno la specializzazione universitaria che serve per lavorare sui quadrati ed è perciò compito loro fare in modo che tutti gli altri sviluppatori hanno tutto quello che serve per lavorare con i quadrati.
In questo modo il Quadrato diventa sempre più maturo, più intelligente, praticamente autocosciente e gli sviluppatori che arriveranno per ultimi, quando il cuore del programma sarà completo, non dovranno più preoccuparsi di inventare la ruota: si potranno preoccupare di modellare il front-end.
Più elegante! Più strutturato! Più moderno! Più progressista!

**Modificato dall'autore il 22.02.2020 20:20**
-
-
■ @ 2020-02-24 22:17:52.0 di Non Autenticato
-