在构造函数(10+)中使用许多参数与setter相比,是否有人知道性能影响是什么?
我的情况是模型对象在没有任何参数的情况下无效,所以我使用单个构造函数。
我知道两种方式都没有显着差异,但我想知道是否有人知道两种情况下究竟发生了什么。
我要求性能,因为该应用程序是可以在没有JIT的旧设备上运行的Android应用程序。
如果我们知道最佳解决方案,那也很好。
答案 0 :(得分:3)
使用setter与构造函数的性能含义可以忽略不计,因为在两个实例中大致相同:传递给方法的数据存储在实例变量中。
使用十个setter你需要为另外九个方法调用付出代价,但它们非常便宜,你不可能发现任何差别,特别是如果它们被JIT编译器内联。
逻辑含义要严重得多:如果你的对象在设置所有十个实例变量之前无效,那么你肯定需要使用一个带有十个参数的构造函数:性能提升,无论是否真实,都是逻辑完整性的次要因素你的班级,不应妥协。
答案 1 :(得分:0)
您可以将所有参数封装在单个对象中,并将其作为参数传递给构造函数。
答案 2 :(得分:0)
在大多数情况下,如果您遇到这种情况,则表明您的代码需要(某些)重构。 2个解决方案中没有一个是好的(即构造函数与setter中的大参数列表)。此外,鉴于您无法强制该对象的客户端调用setter,因此很容易发生一些运行时错误。
至于性能部分:不,因此不会发生性能影响。它没有理由应该这样做。