Elementor Header #8

29. Магические числа

Магические числа (Magic Numbers) — это числовые литералы, которые появляются в коде без явного объяснения их смысла. Использование магических чисел в коде затрудняет его чтение и сопровождение. В этом уроке мы рассмотрим, почему использование магических чисел является плохой практикой, и как можно улучшить код, избегая их.

Основные концепции

Определение магических чисел

  • Магические числа — это числовые значения, которые используются в коде без пояснений или комментариев. Они могут быть неочевидными и трудными для понимания.
				
					let totalPrice = price * 1.2; // 1.2 — магическое число

				
			

Проблемы с магическими числами

  • Сложность понимания кода: Читателю кода может быть непонятно, что означает числовое значение.
  • Трудность сопровождения: При изменении значения нужно искать и изменять все его вхождения в коде.
  • Повышенная вероятность ошибок: Изменение одного вхождения числа и пропуск другого может привести к ошибкам.

Как избежать магических чисел

  • Использование констант: Замените магические числа на константы с описательными именами.
  • Комментарии: Добавьте комментарии, объясняющие значение числа (не рекомендуется как основной метод).
				
					const TAX_RATE = 0.2;
let totalPrice = price * (1 + TAX_RATE);

				
			

Примеры

Пример с магическими числами

				
					function calculateFinalPrice(price) {
  return price * 1.18; // 1.18 — магическое число
}

let finalPrice = calculateFinalPrice(100);
console.log(finalPrice); // 118

				
			

Исправленный пример с использованием констант

				
					const VAT_RATE = 0.18;

function calculateFinalPrice(price) {
  return price * (1 + VAT_RATE);
}

let finalPrice = calculateFinalPrice(100);
console.log(finalPrice); // 118

				
			

Использование нескольких констант

				
					const DISCOUNT_RATE = 0.1;
const SHIPPING_COST = 5.99;

function calculateTotal(price) {
  let discountedPrice = price * (1 - DISCOUNT_RATE);
  return discountedPrice + SHIPPING_COST;
}

let total = calculateTotal(100);
console.log(total); // 95.99

				
			

Распространенные ошибки

Магические числа в условиях

				
					if (userAge >= 18) { // 18 — магическое число
  // код для взрослых пользователей
}

				
			

Исправленный вариант

				
					const ADULT_AGE = 18;

if (userAge >= ADULT_AGE) {
  // код для взрослых пользователей
}

				
			

Магические числа в циклах

				
					for (let i = 0; i < 10; i++) { // 10 — магическое число
  // код
}

				
			

Исправленный вариант

				
					const MAX_ITERATIONS = 10;

for (let i = 0; i < MAX_ITERATIONS; i++) {
  // код
}

				
			

Заключение

Избегание магических чисел — важный аспект написания чистого и поддерживаемого кода. Использование констант с описательными именами помогает сделать код более понятным и легким для сопровождения. Это улучшает читаемость кода и уменьшает вероятность ошибок.

Тестовое задание

  1. В функции calculateTotalCost замените магическое число на константу с описательным именем.
  2. Напишите функцию isSeniorCitizen, которая принимает возраст пользователя и возвращает true, если возраст больше или равен 65. Используйте константу для значения возраста.

Пример решения:

				
					// Задание 1
const TAX_RATE = 0.2;

function calculateTotalCost(price) {
  return price * (1 + TAX_RATE);
}

let totalCost = calculateTotalCost(150);
console.log(totalCost); // 180

// Задание 2
const SENIOR_AGE = 65;

function isSeniorCitizen(age) {
  return age >= SENIOR_AGE;
}

console.log(isSeniorCitizen(70)); // true
console.log(isSeniorCitizen(60)); // false

				
			

Этот урок поможет вам лучше понять важность избегания магических чисел в JavaScript и научит использовать константы для улучшения читаемости и сопровождаемости кода.

logo