Некоторые числа считаются «магическими числами» только по своему контексту. В некоторых случаях используется простая концепция, которая не имеет ничего общего с конкретным значением числа. Например, если вы хотите проверить, не является ли список пустым, вы можете написать одно из следующих утверждений:
if (list.Count != 0)
if (list.Count > 0)
if (list.Count >= 1)
Ни 0
, ни 1
не имеет никакого значения, кроме "ничто" и "что-то", и поэтому три вышеприведенных утверждения следует читать как "не ничего", "больше, чем ничего" и "по крайней мере что-то", и поэтому я бы не назвал их использование "магическими числами". Могут быть другие способы выполнить такую проверку, не используя никаких цифр. Например, в C # вы можете использовать оператор Any
LINQ:
if (list.Any())
Я считаю, что это более наглядно и обеспечивает читабельность кода, напоминающую историю. Другие языки могут иметь другие средства для выражения таких понятий, как «ничто», «что-то», «пустой набор», «непустой набор» и т. Д.