Βελτιστοποίηση Επαναλαμβανόμενων Λειτουργιών στο JavaScript
Συχνά, οι αρχάριοι προγραμματιστές κάνουν αλόγιστα κλήση της ίδιας συνάρτησης πολλές φορές, σπαταλώντας πόρους.
Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι μας δίνεται μια συμβολοσειρά που περιέχει κάποια διαδρομή:
let path = 'img.png';
Ας υποθέσουμε ότι έχουμε το καθήκον να ελέγξουμε
αν η διαδρομή τελειώνει με την επέκταση
.png ή .jpg. Κάποιος
αρχάριος προγραμματιστής έγραψε
την ακόλουθη λύση:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Τι είναι λάθος με αυτήν τη λύση; Το πρόβλημα είναι
ότι η μέθοδος slice καλείται δύο φορές,
κάνοντας το ίδιο πράγμα. Αυτό, φυσικά,
δεν είναι βέλτιστο.
Για βελτιστοποίηση, πρέπει να αποκοπεί η συμβολοσειρά μία φορά, να αποθηκευτεί το αποτέλεσμα σε μια μεταβλητή και στη συνέχεια να χρησιμοποιηθεί αυτή η μεταβλητή παρακάτω:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Βελτιστοποιήστε τον παρακάτω κώδικα:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Βελτιστοποιήστε τον παρακάτω κώδικα:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Βελτιστοποιήστε τον παρακάτω κώδικα:
let date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'year ' + date.getFullYear() + ' fits';
} else {
res = 'year ' + date.getFullYear() + ' doesn't fit';
}
console.log(res)