【发布时间】:2020-01-15 17:17:48
【问题描述】:
我有一个无论如何都会加载的类,但如果单击则只需要一个参数。总是将参数传递给类还是传递一个 lambda 并在单击时调用它会更好吗?
示例:
class ItemViewModel(item: ProductItem,
private val index: Int,
private val title: String?){
fun onItemClick() = foo(title)
}
或
class ItemViewModel(item: ProductItem,
private val index: Int,
private val getTitle: () -> String?){
fun onItemClick() = foo(getTitle)
}
【问题讨论】:
-
我真的很困惑 :) 显示您正在谈论的代码,不要害羞。此外,传递“变量”通常不需要担心(假设您不打算创建 4GB 字符串......)。
-
添加了一个例子。这不是一个非常紧迫的问题,当我写这篇文章时,我认为答案将只是传递变量,因为它更具可读性。
-
我更喜欢lamba方法,但在大多数情况下,这并不重要,更多的是根据具体情况。
-
您似乎担心过早的优化。恕我直言,您应该始终努力编写简单而干净的代码,然后担心(在大多数情况下您不需要)任何优化。通过老式的方式传递前两个参数,然后将最后一项作为 lambda 类型传递,正如人们所说的那样,这打破了“规范”。在这种情况下,在经典方式上使用 lambda 不会产生任何性能优势。 TBH,该类没有提供读者信息,它需要 3 个参数的目的是什么。如果会首先担心分离关注点,即担心使其更具凝聚力。
-
Lambda 实际上可能比字符串消耗更多的内存,因为在 JVM 字节码中它无论如何都由
Object表示。
标签: android kotlin memory-management lambda android-viewmodel