Главная страница » Java » 22. Магические числа
Магические числа — это числовые значения, которые используются в коде без явного объяснения их значения или назначения. Такие числа могут затруднить понимание и поддержку кода. В этом уроке мы рассмотрим, что такое магические числа, почему их следует избегать, и как правильно их заменять.
Магическое число — это константное значение, которое появляется в коде напрямую, без пояснения о том, что оно означает. Использование магических чисел может привести к путанице и ошибкам, так как значения не очевидны и их может быть трудно найти и изменить при необходимости.
Пример:
public class DiscountCalculator {
public double calculateDiscount(double amount) {
return amount * 0.15; // 0.15 — магическое число
}
}
В данном примере значение 0.15
представляет собой процент скидки, но оно не поясняется и не ясно, откуда оно взялось.
Использование магических чисел в коде может вызвать несколько проблем:
Для устранения магических чисел из вашего кода, используйте именованные константы. Константы объявляются с помощью ключевого слова final
и обычно именуются с использованием заглавных букв и подчеркиваний.
Пример:
public class DiscountCalculator {
private static final double DISCOUNT_RATE = 0.15; // Константа вместо магического числа
public double calculateDiscount(double amount) {
return amount * DISCOUNT_RATE;
}
}
В этом примере DISCOUNT_RATE
является константой, которая поясняет, что значение 0.15
представляет собой процент скидки. Это делает код более понятным и легче поддерживаемым.
При создании констант следуйте следующим рекомендациям:
Примеры:
public static final int MAX_USERS = 100;
public static final double PI = 3.14159;
public static final String ERROR_MESSAGE = "An error has occurred.";
Ошибка:
public class Payment {
public double calculateTax(double amount) {
return amount * 0.08; // Неясно, что это за значение
}
}
Исправление:
public class Payment {
private static final double TAX_RATE = 0.08; // Явное значение
public double calculateTax(double amount) {
return amount * TAX_RATE;
}
}
Ошибка:
public class Rectangle {
private double width;
private double height;
public double calculateArea() {
return width * height * 1.0; // Использование магического числа 1.0
}
}
Исправление:
public class Rectangle {
private static final double UNIT_CONVERSION_FACTOR = 1.0;
private double width;
private double height;
public double calculateArea() {
return width * height * UNIT_CONVERSION_FACTOR;
}
}
Избегание магических чисел и использование именованных констант помогает создавать более понятный, поддерживаемый и гибкий код. Константы с ясными именами делают код более самодокументированным, упрощают его изменение и снижают вероятность ошибок.
Ваше задание — написать программу, которая:
Пример программы:
public class TaxCalculator {
// Использование магического числа
public double calculateTax(double amount) {
return amount * 0.07; // Магическое число
}
public static void main(String[] args) {
TaxCalculator calculator = new TaxCalculator();
double amount = 100.0;
System.out.println("Tax on " + amount + " is: " + calculator.calculateTax(amount));
}
}
public class ImprovedTaxCalculator {
private static final double TAX_RATE = 0.07; // Константа вместо магического числа
public double calculateTax(double amount) {
return amount * TAX_RATE;
}
public static void main(String[] args) {
ImprovedTaxCalculator calculator = new ImprovedTaxCalculator();
double amount = 100.0;
System.out.println("Tax on " + amount + " is: " + calculator.calculateTax(amount));
}
}
Ожидаемый результат:
Tax on 100.0 is: 7.0
Tax on 100.0 is: 7.0
Проверьте свою программу, чтобы убедиться, что она правильно выполняет все операции и обрабатывает возможные ошибки.
Наша цель и главная задача сделать качественное образование в вашем браузере
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024 Все права защищены. CodeFor.