language-agnostic - 魔数(Magic Number)与命名常量

标签 language-agnostic

在编写代码时,尤其是在处理日期和时间时,您必须处理许多特定的数字,例如:一分钟 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 小时”),但会在 WEEK 常数处划线。

最佳答案

86400 不行,因为你很容易把它打错为 84600、88400 等

错误输入的常量将是编译错误

关于language-agnostic - 魔数(Magic Number)与命名常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/608856/

相关文章:

php - 国际化验证

language-agnostic - 在设计像 SO 这样的在线社区代表系统时要考虑什么?

algorithm - 在 rabin-karp rolling hash 中选择基数和模素数

algorithm - 以离散步骤绘制弧线

language-agnostic - 在 CQRS 工作流中获取另一个域的数据的推荐方法是什么?

algorithm - 在两个大小为 n 的数组中找到第 n 个最大数的算法

facebook - 如何为移动应用程序实现安全的 Facebook 登录/注册/连接 Web 服务?

language-agnostic - 回车符\r和换行符\n是否应该始终一起使用?\r\n

.net - 学习避免年龄歧视的技能(特别是 .net)

algorithm - 计算组合的等级?