Магические числа против именованных констант - PullRequest
15 голосов
/ 04 марта 2009

При написании кода, особенно при работе с датами и временем, вам приходится работать с большим количеством конкретных чисел, например: 60 секунд в минуту, 3600 = секунд в час.

Некоторые люди предпочитают использовать необработанные значения для многих из них, тогда как другие помещают их в константы для повышения читабельности.

например:

$x = time() + 3600;
$y = time() + 86400;
$z = time() + 604800;

// vs

define('MINUTE', 60);
define('HOUR',   60 * MINUTE);   // 3600
define('DAY',    24 * HOUR);     // 86400
define('WEEK',    7 * DAY);      // 604800

$x = time() + HOUR;
$y = time() + DAY;
$z = time() + WEEK;

Конечно, второе легче читать, но немного OTT для некоторых нижних значений, поэтому где именно вы рисуете линию? Лично я не вижу проблем с читаемостью 86400 (в своей голове я автоматически читаю это как «24 часа»), но нарисую линию на постоянной НЕДЕЛИ.

Ответы [ 22 ]

0 голосов
/ 04 марта 2009
$x = time() + HOUR;
$y = time() + DAY;
$z = time() + WEEK;

Как насчет волшебных струн? Я склонен делать такие вещи:

  $x = strtotime('now + 1 hour');
  $y = strtotime('now + 1 day');
  $z = strtotime('now + 1 week');

Да, возможно, он работает немного медленнее. Но в более широком смысле, это действительно имеет значение?

0 голосов
/ 04 марта 2009

Я бы определенно использовал константы, в то время как й вы можете посмотреть на 86400, и через 24 часа будущий программист, выполняющий обслуживание, может быть не таким ярким и будет чесать голову, что именно означает это число , Это также относится и к вам, если вы однажды вернетесь и забудете, что означает 86400.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...