Korduvate operatsioonide optimeerimine JavaScriptis
Sageli teevad algajad programmeerijad mõtlematult sama funktsiooni mitut korda välja kutsudes ressursse raiskades.
Vaatame näidet. Olgu meil antud string, mis sisaldab mingit teed:
let path = 'img.png';
Olgu meie ülesandeks kontrollida,
kas tee lõpeb laiendiga
.png või .jpg. Mõni
algaja programmeerija kirjutas
järgmise lahenduse:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Mis selle lahendusega on valesti? Probleem on selles,
et meetodit slice kutsutakse kaks korda välja,
tehes sama asja. See pole muidugi
optimaalne.
Optimeerimiseks tuleb stringi lõikamine teha üks kord, tulemus kirjutada muutujasse ja seejärel kasutada seda muutujat edaspidi:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimeerige allolev kood:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimeerige allolev kood:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimeerige allolev kood:
let date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'aasta ' + date.getFullYear() + ' sobib';
} else {
res = 'aasta ' + date.getFullYear() + ' ei sobi';
}
console.log(res)