Магические Числа в программировании

Магическими числами называются числа, которые встречаются в коде без всякого объяснения.
Почему "магические"? Может потому, что выглядит как магия код вроде i = 325 / a;
Даже если во время написания кода вы помните о том, что это, то уже спустя неделю/месяц/год точно забудете и вы, или ваши коллеги, будете задавать себе вопросы: а почему именно это число? Почему не больше и не меньше.

Главный принцип: стоит избегать "магических чисел" в коде.

Пример:
У вас есть код, что-то вроде плоского морского боя

char[] cellsVisible = new char[10]; // создаем видимое игроку игровое поле
int shipPos = (int) (Math.random() * 7); // создаем 3-палубник чтобы он не вышел за пределы массива

Вроде бы все хорошо. Даже что такое 10 можно быстро догадаться. Но откуда взялось число 7?

Лучше описать явно:

int fieldLength = 10;
char[] cellsVisible = new char[fieldLength]; // создаем видимое игроку игровое поле
int shipLength = 3;
int shipPos = (int) (Math.random() * (fieldLength - shipLength)); // создаем 3-палубник чтобы он не вышел за пределы массива


ОК! ИДЕМ ДАЛЬШЕ!