java - 是重载方法更好,还是使用 varargs 传递 0 到 1 个变量?爪哇
问题描述
我是一名 QA 测试员。在理解 Java 的一些最佳实践方面,我的背景并不是最好的。
这是场景。我有一种方法可供多个测试使用。我意识到我只需要为方法中的极少数测试添加一个参数。
public static void verifyActivity() {
CustomViewMatchers.waitForElementToBeEnabled(withId(R.id.(...)), 5);
}
我现在将这个解决方案作为可变参数放入框架中。
public static void verifyActivity(boolean... buttonDisplay) {
if (buttonDisplay == null)
CustomViewMatchers.waitForElementToBeEnabled(withId(R.id.(...)), 5);
}
哪种解决方案是最佳实践?我应该重载该方法,还是继续使用可变参数。
解决方案
除非您正在开发一个库,否则拥有可供将来使用的方法是没有意义的。如果您目前只需要没有参数的方法,则应删除额外的可变参数。
可变参数方法的明显缺点是对参数进行额外的空检查,当然保留未使用的代码会增加维护成本。因此,如果有机会摆脱应该使用的方法之一。
正如Oracle 文档指出的那样:
作为 API 设计人员,您应该谨慎使用它们,只有当它的好处确实令人信服时。一般来说,您不应该重载可变参数方法,否则程序员将很难弄清楚调用了哪个重载。
推荐阅读
- java - 如何在画布上以原始格式绘制更多矩形?
- javascript - 使用 Enzyme 和 Sinon 进行内部调用单元测试
- c# - 如何在 Windows 应用程序打包项目中处理 URI 激活?
- flutter - 在 SafeArea 中获取小部件高度的正确方法
- python - 如何将 T-1 日期值打印到 Excel 表
- angular - 在 angular.json 中自动添加脚本和样式
- javascript - 如何在粘性容器内创建类似苹果的滚动效果?
- electron - 传递请求结果以查看
- node.js - 在 Heroku 上部署定制的 Node.js 模块
- python - 在带注释的 FilteredRelation 上使用 exclude 不起作用?