2015-08-19 57 views
1

聲明成員published具有優於public爲什麼要宣佈成員公開而不是公開?

那麼,有以往任何時候都宣告成員的利益public而不是publishedpublished有什麼缺點嗎?或者我應該總是宣佈成員published,作爲一項規則?


PS:不是重複的;在發佈我的問題之前,我閱讀了該問題及其所有答案。 「可能的重複」問題解釋了兩個關鍵詞之間的差異,但沒有給出應該使用哪一個的指導,或者使用哪一個的優點/缺點。

+8

我會說你應該做反之亦然。在需要時聲明它們爲「公共」和「發佈」(並非總是希望在OI中擁有該屬性,也不總是使用舊式的RTTI)。 – TLama

+0

@TLama爲什麼你不想在Obj Inspector中使用它?它的可見性是公開的,它在API中,與外界建立了一些契約,那麼爲什麼你不想在Inspector中顯示所有可見的成員? – DBedrenko

+4

由於存在只有運行時的屬性,例如'Handle','Parent','MouseInClient'和類似的。在OI中並非一切都有意義。這就是爲什麼我會考慮反思的原因。 – TLama

回答

5

聲明爲已發佈會產生存儲成本,因爲可執行文件的大小會增大以包含RTTI。聲明爲公共避免了成本。這是不太可能的,特別是考慮到現代Delphi可執行文件的巨大規模,包含大量的代碼甚至從不執行。

對於可在對象檢查器中編輯的組件,publicpublished之間的差異更爲顯着。正如你所說,這是組件如何確定哪些屬性在Object Inspector中可見的。有些屬性應該可見,其他屬性則不可見。用戶「TLama」提供了需要公開的屬性的精美示例,但不應在Object Inspector中編輯:Parent,Handle等等。

除此之外,它歸結爲意見。完全取決於你決定要做什麼。