2013-12-12 23 views
0

所以我明白,紅寶石糖的語法翻譯成剛好定義的實例變量和寫/讀它們的方法。關於使用attr和可見性(例如私人,公共)的良好設計和風格練習是什麼?

我想知道的是,如果您試圖讓您的類的公共接口最小化,那麼設計的最佳實踐是什麼?你應該避免使用attr_accessor,除非非常清楚公開? attr_writer和attr_reader如何適應公共/私人的可見性?

如果說attr_reader對於經常被讀取的私有字段是有意義的,那麼您是否應該寬泛地使用attr_reader並且不要明確地定義這些字段?

回答

1

attr方法的目的是讓實例變量可以從實例外部訪問實例變量。因此,(過度)使用這種方法已經違反了面向對象的編程。如果你只需要從一個實例,這是從視圖的面向對象設計的角度出發最好訪問這些網站,可以直接引用實例變量:

@foo = 3 
@foo # => 3 

你不應該需要ATTR方法。

+0

是的,但我問的是,當你想要實例變量可以從實例外部訪問,你如何最大限度地保護隱私,並且有沒有明確定義這種實例變量和只使用訪問器有什麼問題? – labyrinth

+0

通過'attr_'類方法定義存取方法並直接定義它們沒有區別。前者是做後者的簡短方法。 – sawa

+0

我不明白你的意思是讓實例變量可以從實例外部訪問,同時最大化隱私。這個想法沒有明確說明。 – sawa