在case類或伴隨對象中聲明方法是否「更清晰」(或更好的性能)?scala case類將方法放在伴隨對象中?
例如
case class My(a:A) {
def m(args) = {...}
}
or
object My {
def m(m:My, args) = {...}
}
在case類或伴隨對象中聲明方法是否「更清晰」(或更好的性能)?scala case類將方法放在伴隨對象中?
例如
case class My(a:A) {
def m(args) = {...}
}
or
object My {
def m(m:My, args) = {...}
}
我寧願將案例類中的方法。將它放在伴侶物體中聽起來像是貧血域模型反模式AnemicDomainModel。
此外,您可以稍後重寫案例類方法或擴展並混合一些特徵。
更好地把方法放在案例類;是不是完全有階級的全部觀點?一個object
是靜態的,通常是方法的一個不好的地方,因爲它意味着他們需要多一個參數。我期望類中的方法執行得非常好,因爲不需要加載伴隨對象實例(更一般地說,它更接近JVM優化的樣式),但這幾乎肯定也是如此在任何真正的節目中都有很小的差別。當然,沒有規則是絕對的;如果你發現一種特定的方法似乎更適合伴侶對象,那麼一定要把它放在那裏。