gpt4 book ai didi

php - 我应该在我的 PHP 代码中使用断言吗?

转载 作者:IT老高 更新时间:2023-10-28 11:56:02 26 4
gpt4 key购买 nike

一位同事添加了 assert在我们的库中我会使用 if 语句并引发异常的地方多次命令。 (在此之前我什至从未听说过 assert。)以下是他如何使用它的示例:

assert('isset($this->records); /* Records must be set before this is called. */');

我会做的:

if (!isset($this->records)) {
throw new Exception('Records must be set before this is called');
}

来自阅读the PHP docs on assert ,看起来建议您确保断言处于事件状态并在使用断言之前添加处理程序。我找不到他这样做的地方。

所以,我的问题是,鉴于上述情况,使用断言是一个好主意吗?我应该更频繁地使用它而不是 if 和异常吗?

另外请注意,我们计划在各种项目和服务器上使用这些库,包括我们甚至可能不参与的项目(这些库是开源的)。这对使用断言有什么影响吗?

最佳答案

适用于大多数语言的经验法则(我隐约知道的一切)是,assert 用于断言条件 always 为真,而if 是合适的,如果可以想象它有时会失败。

在这种情况下,我会说 assert 是合适的(基于我对情况的薄弱理解),因为 records 应该 always在调用给定方法之前设置。因此,未能设置记录将是程序中的错误,而不是运行时条件。在这里,assert 有助于确保(通过充分的测试)没有可能的程序执行路径会导致被 assert 保护的代码被调用没有设置记录

使用 assert 相对于 if 的优点是 assert 通常可以在生产代码中关闭,从而减少开销。可以想象,最好使用 if 处理的那种情况可能会在生产系统的运行时发生,因此无法关闭它们不会造成任何损失。

关于php - 我应该在我的 PHP 代码中使用断言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4516419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com