gpt4 book ai didi

ios - 是否应该在生产 iOS 应用程序中保留断言?

转载 作者:技术小花猫 更新时间:2023-10-29 11:14:22 24 4
gpt4 key购买 nike

常见的做法可能是在应用程序开发期间将断言放入代码中以检查输入参数、数据完整性等。

我测试我的应用程序,但是,考虑到我不是 Knuth( 写了 1 美元的支票),而且我无力雇用一大批全职 QA 人员作为做一些医疗和空间系统软件公司,我假设我所有的应用程序总是有很多在测试或 QA 期间从未见过的错误。否则假设在理智上似乎很不诚实。因此,在测试了一个应用程序(并且显然删除了导致任何以前看到的 ASSERT 失败的所有错误)并准备好将应用程序发送给 Apple 之后,应该如何处理发布/分发版本中的所有 ASSERT 检查?离开还是不行动?

这是让他们留在其中的一个理由:如果某个应用对某些用户来说表现不佳,则该应用可能会被这些用户评为 1 星,而没有人会充分详细地告诉开发人员原因。但是,如果应用程序因 ASSERT 故障而崩溃,该应用程序可能仍会被评为 1 星,但如果有足够多的用户选择加入,开发人员可能会通过 iTunes 和 iTunes Connect 间接获得一些故障转储,以找出问题所在。如果该应用程序由于全新的 ASSERT 崩溃而被 Apple 拒绝,这将防止该应用程序的不良版本进入客户的设备。

最佳答案

将它们保留在您指定的原因中,但也因为在某些情况下它们充当注释(尤其是在 Objective-C 中涉及类型的情况下)。不要担心性能下降,除非它成为一个问题,或者您知道您处于性能关键情况并且特定断言将在主运行循环中运行数百或数千次。

Can't resist mentioning this article on asserts vs. NSAssert.

就个人而言,我开始删除我为调试目的而放入的那些,但是如果您使用断言来检查数据完整性、参数、资源依赖性和其他相关的东西——可以说,您可以自己抛出异常,这可能更明智——然后我会把它们留在里面。

注意:还有一点是,仅仅删除断言是完全愚蠢的,因为您的应用程序要么崩溃,要么处于不一致状态,这两种情况都比您可以采取的方式崩溃更糟糕从崩溃日志中识别(因此保留断言)。另一方面,用 if 语句替换断言可能是一件好事。

关于ios - 是否应该在生产 iOS 应用程序中保留断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8481396/

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