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 沒辦法提供你想要的功能 🤯)

海外馬拉松 - 青森櫻花馬拉松 2024

# 簡介

## 第二場海外馬拉松

## 賞櫻

# 青森櫻花馬拉松

## 賽道體驗、感想

---

第二場海外馬拉松

我的第一場海外馬拉松是 Mt. Fuji international Marathon 2023 富士山馬拉松 2023,比賽時間是 2023.11.26 ,這場青森櫻花馬拉松是 2024.04.21,兩場之間才差了五個月不到!為什麼這麼近呢?主要就是富士山馬拉松的體驗太棒了,跑完富士山馬拉松之後接著就跑了台北馬拉松,兩場比較之下覺得可以出國跑還是出國吧!

但是怎麼會在這麼近的時間又跑下一場呢?也只是剛好其中一位朋友在 4/20 ~ 4/25 這段期間有休假,所以就特別找了這段期間的比賽,本來是想參加另外一場「佐渡朱鷺馬拉松」,是辦在佐渡島的比賽,佐渡島算是一個「如果不是有比賽可能一輩子也不會到那裡去吧?」的地方,所以也是蠻吸引人的!

經過我研究之後,發現要到佐渡島的交通其實還蠻花時間的,加上除了跑步之外佐渡島附近比較少知名的觀光景點。在煩惱的時候呢,發現同時間其實還有一場「青森櫻花馬拉松」!發現的時候我就蠻有興趣的,因為我在 2013 (沒錯!是10年前,不是2023)的時候有到京都賞櫻過,覺得日本的櫻花季非常的漂亮,青森的交通也相對容易一些,附近也有知名的櫻花名所弘前城,所以最後我們就覺得參加「青森櫻花馬拉松」啦!

賞櫻

2013 年到日本賞櫻的時候是朋友揪的,我其實就是到現場才發現:「哇~好漂亮喔!好美喔!」完全沒有做功課。這次是自己安排當然要研究研究是怎麼回事呢?經過我研究一番之後發現,原來櫻花的花期其實很短,就是開花、滿開、吹雪也就差不多一個禮拜多,兩個禮拜不到,要可以看到櫻花真的是要有點運氣啊!

日本在一月的時候日本氣象廳就會公布今年的櫻花開花的預測,因為地球暖化的關係,每年櫻花開花的時間越來越早,如果以去年的開花日來推估的話,比賽日時可能已經快要吹雪了,雖然心中希望可以看到不同時段的櫻花,但是如果無法的話,我個人覺得吹雪是最浪漫的時刻,所以也是稍微可以接受。

幸運的是,到了三月多的時候發現今年好像沒有去年這麼冷,所以可能會比去年稍為晚開個幾天,這樣比賽日的時候櫻花就會是滿開的,然後比賽過後幾天又有吹雪可以看,真的太幸運啦!

青森櫻花馬拉松

這次青森櫻花馬拉松只報名了 21K ,因為看到青山學院也會派人參加 21K 的比賽,加上也不想太累,所以就只跑 21K 啦!原本「都特別出國了,當然要跑 42K 阿!」的想法在第二場馬拉松就已經看開了,不要太累啦!(在寫這段紀錄的時候已經是 2025.08.12 了,雖然這裡這樣說,下一場海外馬還是報了 42K,好累阿!)

比賽的前一天領物資是在終點的海邊的廣場,從青森車站走路過去還蠻OK的,附近也有物產館之類的可以去買點伴手禮。

比賽當天天氣很不錯!這場賽道基本上都是平路,只有一座橋,難度不高。櫻花開的到處都是,雖然已經有點過了滿開的時期,但是還是好浪漫啊!中間還會跑過一個公園,公園道兩側都是櫻花,好漂亮!

比賽後有很多物資可以拿,也幸運的在 2 小時內完賽,覺得是一場蠻不錯的比賽!
(隔年的天氣就很不好,還要穿雨衣跑,天氣真的影響很大阿)

完賽後的下午我們還去了弘前城賞櫻花~日本的櫻花真的是太浪漫了,有機會一定體驗看看阿!