想知道,我們何時應該在模型中的某些方法實際上必須使用private
或protected
?我們應該什麼時候考慮使用私人還是保護?
有時我不能困擾於將我的方法分組在private
或protected
。我只是保持原樣。但是我知道這肯定是一個不好的做法,否則這兩個分組將不會在編程中創建。
謝謝。
想知道,我們何時應該在模型中的某些方法實際上必須使用private
或protected
?我們應該什麼時候考慮使用私人還是保護?
有時我不能困擾於將我的方法分組在private
或protected
。我只是保持原樣。但是我知道這肯定是一個不好的做法,否則這兩個分組將不會在編程中創建。
謝謝。
record.method()
,那麼「公共」self.method()
,然後選擇「私人」self.method() # in subclass
,則「保護」我不知道紅寶石作爲一種特殊情況,但我認爲答案是一樣的其他語言也一樣,所以這裏是:
的私有方法只能由成員進行訪問同一類,而受保護的類也可用於擴展聲明方法的基類的成員。
我給我意見,也許我會得到它踢的,但我不費心保護或紅寶石私人。事實上,Ruby對待你像一個成年人,如果你想從課外運行私人方法,你可以(有areways)。您可以在課堂外運行受保護的方法。你甚至可以重新分配常量......基本上,你可以做任何你喜歡的事情。
這就是爲什麼我喜歡它,這是你的責任。我的感覺是,以紀念的東西作爲保護或私有你正在做兩件事情:
,此外,你這就更難測試,因爲它可以是一個真正的痛苦測試私有方法(請What's the best way to unit test protected & private methods in Ruby?對周圍的方式)
對於那些過去的兩個原因,我不不要打擾他們。如果你真的想在你的類/方法和消費者(不管他們是代碼還是開發者)之間存在某種障礙,那麼還有其他更有效的方法(代理,混淆,加密,密碼保護方法等)。否則,爲什麼不給他們訪問你使用的相同工具?
這聽起來有點不對......你的**第三點**。一個子類可以在內部訪問其超類的'private'方法。一個'protected'方法使你能夠傳入同一個類的對象並在該對象上執行受保護的方法。 – slindsey3000 2012-01-04 19:34:27
http://weblog.jamisbuck.org/2007/2/23/method-visibility-in-ruby「受保護的方法實際上可以在接收者與」自我「相同的類別時被調用」 – clyfe 2012-01-04 20:24:22