1

我正在做一个 Android 应用程序。我的客户要求我在 android 代码中包含断言。我搜索了一下,发现 Commonsware应该在 android 代码中避免断言。但我需要一个强有力的理由来避免使用断言?请让我知道我是否应该使用断言。如果是的话,在 android 中使用断言的规则或建议是什么。

4

2 回答 2

7

但是我需要一个强有力的理由来避免使用断言?

一个断言是故意引入一个未处理的、无法捕获的错误(AssertionError具体来说)。

默认情况下,断言在 Android 中不起作用。您必须专门启用它们。这意味着您尝试通过断言验证的任何逻辑都不会在生产设备上使用。

因此,我同意这个评估

步骤 0:将注释重构为断言

第一步:将代码中的断言重构为单元测试

第三步:将剩余的断言升级为程序异常

因此,当然欢迎您验证输入、确认输出等。只是不要使用assert. 相反,以其他方式处理这种情况。如果不出意外,抛出一个RuntimeExceptionlike an IllegalArgumentException,以便您的顶级未处理异常逻辑可以控制。

在 Internet 上进行简单的搜索会发现许多关于选择断言与异常的文章,例如:

于 2013-05-11T14:30:20.837 回答
1

这样的 Assert 有什么意义?
在生产代码上,断言不会有多大好处,它们只会检测为什么您认为不变量的内容与您预期的不符,但它不会阻止您的应用程序崩溃。
此外, Assert 类是 的一部分junit.framework.Assert,它在这里用于单元测试。因此,建立单元测试来测试这些不变量是一种更好的做法,这样您就可以在未来的开发破坏它们时采取行动。

于 2013-05-11T14:18:57.100 回答