我傾向於作出一個隱含的假設,即getters只不過是一個訪問控制包裝器,而不是一個相當輕量的指令集來返回一個值(或一組值)。「Getters不應該包含大量的邏輯。」對或錯?
因此,當我發現自己編寫的處理器消耗更多,處理器耗費更大時,我感覺或許這不是最明智的舉動。在我自己的代碼中調用一個getter(特別是讓我們引用C#中方法與getter調用之間存在語法差異的地方),那麼我就隱式地假設這些是輕量級的 - 事實上這可能不是案件。
這是什麼普遍的共識?除了使用其他人的圖書館,你是否寫沉重的獲得者?還是你傾向於將較重的吸氣者視爲「完整的方法」?
PS。由於語言的差異,我預計會有相當多的不同想法......
在我看來,緩存是最大的問題。如果一個getter不打算改變對象狀態,那麼緩存一個可行的選項?對我來說,這是一個顯而易見的地方,它是用於原子讀取操作的。另外,語法糖:我喜歡例如。 C#的getters。但是如果語言不能強制托馬斯答覆中引用的那種用法,那麼它是否應該嘗試(以Java爲例)?然後,應該只在方法的文檔中記錄性能。關鍵是,這都是非常主觀的。附:爲了防止戰爭,我是兩種語言的粉絲(還有其他許多人)。 – 2010-11-01 12:03:16