我正在做一个 Android 应用程序。我的客户要求我在 android 代码中包含断言。我搜索了一下,发现 Commonsware说应该在 android 代码中避免断言。但我需要一个强有力的理由来避免使用断言?请让我知道我是否应该使用断言。如果是的话,在 android 中使用断言的规则或建议是什么。
问问题
392 次
2 回答
7
但是我需要一个强有力的理由来避免使用断言?
一个断言是故意引入一个未处理的、无法捕获的错误(AssertionError
具体来说)。
默认情况下,断言在 Android 中不起作用。您必须专门启用它们。这意味着您尝试通过断言验证的任何逻辑都不会在生产设备上使用。
因此,我同意这个评估:
步骤 0:将注释重构为断言
第一步:将代码中的断言重构为单元测试
第三步:将剩余的断言升级为程序异常
因此,当然欢迎您验证输入、确认输出等。只是不要使用assert
. 相反,以其他方式处理这种情况。如果不出意外,抛出一个RuntimeException
like an IllegalArgumentException
,以便您的顶级未处理异常逻辑可以控制。
在 Internet 上进行简单的搜索会发现许多关于选择断言与异常的文章,例如:
于 2013-05-11T14:30:20.837 回答
1
这样的 Assert 有什么意义?
在生产代码上,断言不会有多大好处,它们只会检测为什么您认为不变量的内容与您预期的不符,但它不会阻止您的应用程序崩溃。
此外, Assert 类是 的一部分junit.framework.Assert
,它在这里用于单元测试。因此,建立单元测试来测试这些不变量是一种更好的做法,这样您就可以在未来的开发破坏它们时采取行动。
于 2013-05-11T14:18:57.100 回答