2025年8月12日 星期二

Why private methods in object-oriented?

今天在思考 class 的分工時想到一個問題:為什麼 method 要分 private 跟 public?

以下是針對這個問題的一些紀錄,包含我自己的思考脈絡,跟網路上找到一些相關的資訊。

第一個想法是:如果一個 class 裡面有一大堆的 private methods 是好的嗎?

會有這個想法是因為目前工作手上的程式有一個奇怪的地方:

一個最大 class 本身帶有很多個 Handler 之類的 member(這裡一時不知道如何稱呼這種不是資料的工具類 class),很多 member 在建立的時候都會把這個 class 的實體當作 constructor 的參數帶過去給這些 class 保存,當作流程上要從這個大 class 要讀取一些資料的時候可以直接使用。

參考資料:

https://stackoverflow.com/questions/2620699/why-private-methods-in-the-object-oriented

(2025.08.10 更新)  (想不到我這麼久以前就能思考這麼難的問題)

看了參考資料裡面的討論,目前被設定成回答的選項說得很好,用 Clock 舉例讓大家可以明白 public method 跟 private method 各負責了不同的任務。

public method 就是使用者可以用的功能,private method 應該包含那些為了做到 public method 的功能,而需要做的動作,這些動作使用者不需要知道,但是卻又需要存在,這時候就可以放在 private method 。

(這樣想來,其實物理世界是全部都是 public method ,所有的細節使用者都可以操作,就算你完全不懂 Clock 的內部機制,你也可以使用 "private method" ,只是你可能會把 Clock 的狀態搞壞,導致 Clock 沒辦法提供你想要的功能 🤯)

沒有留言:

張貼留言