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('დასვენების დღე');
} else {
console.log('სამუშაო დღე');
}
ოპტიმიზაცია გაუკეთეთ ქვემოთ მოცემულ კოდს:
let date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'წელი ' + date.getFullYear() + ' შესაფერისია';
} else {
res = 'წელი ' + date.getFullYear() + ' არ არის შესაფერისი';
}
console.log(res)