【記錄】ThePrimegen 與 Uncle Bob的直播訪談心得

更新於 2024/12/01閱讀時間約 5 分鐘

前言

2024-04-26晚上跟到了在twitch上的直播,ThePrimeagen邀請到了Uncle Bob進行訪談—沒錯,就是那位《Clean Code》、《Clean Architecture》、《Clean Agile》等書的作者Robert C. Martin。


整體訪談時間約一小時半,不知道youtube上會不會放上直播存檔。


幾年前剛看過clean code的演講紀錄,陸陸續續找到其他訪談影片,Uncle Bob的主軸跟說詞在每個影片幾乎一致,帶給我的感覺是:我的書已經完整記錄了我的想法,我也為各個章節準備好完整的故事架構,遇到演講或是遇到特定的問題,我就把那個章節拿出來再闡述一次。


因此,這次的訪談我想看看有沒有不一樣的東西。以下為憑印象理解的問答,整理出一些心得記錄:


使用Clojure語言的契機

作為第一個開場問題,SICP(Structure and Interpretation of Computer Programs)果然又被搬了出來,網路上找的到的公開課是使用LISP語言講述,偏向計算思維跟問題解決的養成。


對設計模式Design Pattern的看法

比起在什麼狀況下套用什麼模式,或是學習辨認設計模式,這裡給出的答案相對單純:

在溝通上可以快速的對焦實作方式。


例如某段程式中不想要多個if判斷分支,打算改寫套用策略模式(Strategy Pattern),那麼有學過的人自然理解會改成什麼樣的做法,至少出來的雛型會是類似的結果。


過早的抽象化

讀過SOLID原則跟有點經驗的工程師大多知道,依賴該建立在抽象層(Interface、Abstract class)而不是實作的類別上,保有軟體修改的彈性。只不過,大多時候或是初期的案子,需求僅是完成功能實作,需要在此時就已經定義好這些抽象的介面嗎?


老實說,聽完這題的討論後,並沒有一個完整的結論。


Uncle bob給出的方式是他會先花一個小時的時間思考整體架構設計,接續著手進行開發試試,之後再回來修改。ThePrimegen的做法是我比較可能採取的方式,先針對需要的功能實作,日後有需要進行抽象化的情況,再進行處理。


100%測試覆蓋率

以妥協的結果來說,測試有其必要,但不是絕對完美。畢竟,我只能在我知道的範圍內,盡量測到100%,而我所不知道的部分,那也是無能為力。


另外一個寫測試必要的重點,是為了進行安全的重構。


以Uncle Bob的說法,當改動了一項功能,也該只有一項測試失敗,意味著依賴項目也只能有一項。某種程度上來說不容易,尤其是在企業級的系統架構下。


因此,在這一部份歸納下列兩點

  • 只對重要、相對容易出錯的部分進行測試,盡量提高測試覆蓋率
  • 建立重構的安全及更改彈性、增加程式碼推上線後不會爆掉的信心


Function的拆分

如clean code一書中提到,function應該要小,小到IDE不能再進行提取方法,並且給予一個適當、明確的名稱。然而我也遇過喜歡全部內容只寫在同一個大function的前輩,不希望透過IDE跳來跳去,穿梭在不同資料夾之間再拼湊回原本的邏輯。


於是,Uncle bob在這裡講了個類似進行early return的方式,即是將這些拆分後具有語意的小function,安排整理他們的順序。


敏捷開發

作為17位敏捷宣言的元老之一,他的想法其實都寫在了書中。此次訪談礙於時間及篇幅,從表述中聽起來意思偏向是:

當初人數不多,大家都是很有經驗的工程師,快速聚焦問題快速處理,定期同步進度


所以其實也是小團隊,完成很多小事情,累積起來達成一項大的里程碑,似乎不像PMP或PMBOK建立起來相對明確的制度及方法論。


總結

必須很誠實地說,上面提到的書我並沒有完全看過,至於提到的內容及思想,網路上都有作者在公開演講的錄影。畢竟透過書籍、翻譯、自我解讀等,總比不上作者本人講述來的直接,避免曲解最初的本意。


另外,直播主也是Netflix超過10年經驗以上的資深工程師,提問也是大多實務開發上非常實際的問題,很顯然這也是多數在實踐Clean code、SOLID、Design Pattern、Agile、TDD等方法論時會產生的疑惑。


從對談結果而言,無關好壞對錯,只能說:

原則大體適用,原則想達到的目的才是根本。






avatar-img
13會員
64內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Err500 的其他內容
上次完成到基本的CRUD及權限控制,後面花了點時間把排序、分頁、圖表總覽的部分做完,其他細節是佈署上線,一般在公司內有專屬的部門處理,僅了解一下流程。
原本的計畫是寫系列文,一天嗑一點,雖然完整影片約17小時,分批消化卻花了我近10天,現在回去看我第一天寫的草稿,編輯時間已經是半年前...。
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
學習Spring Boot是Java工程師必備技能,文章分享瞭如何自學並快速上手Spring Boot開發,包括架構、開發工具、專案建立以及實作過程。
在過年期間,利用集中時間跟完Mosh Hamedani的Next.js課程,掌握了前端至後端的技術應用。本文分享了學習過程中的收穫與成果,以及對於未來應用的展望。
巨集(Macro)是什麼? 第一次聽到這個詞是出現在excel,按下錄製鍵後,畫面上進行的操作會被記錄下來,可以重複回放執行前述操作。之後接觸C語言的#define,巨集又跟函數類似...
上次完成到基本的CRUD及權限控制,後面花了點時間把排序、分頁、圖表總覽的部分做完,其他細節是佈署上線,一般在公司內有專屬的部門處理,僅了解一下流程。
原本的計畫是寫系列文,一天嗑一點,雖然完整影片約17小時,分批消化卻花了我近10天,現在回去看我第一天寫的草稿,編輯時間已經是半年前...。
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
學習Spring Boot是Java工程師必備技能,文章分享瞭如何自學並快速上手Spring Boot開發,包括架構、開發工具、專案建立以及實作過程。
在過年期間,利用集中時間跟完Mosh Hamedani的Next.js課程,掌握了前端至後端的技術應用。本文分享了學習過程中的收穫與成果,以及對於未來應用的展望。
巨集(Macro)是什麼? 第一次聽到這個詞是出現在excel,按下錄製鍵後,畫面上進行的操作會被記錄下來,可以重複回放執行前述操作。之後接觸C語言的#define,巨集又跟函數類似...
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
10/22/2020 紀錄 一個月內,我的紀錄就打破了三次。 其實也沒什麼大不了的。 帶團登山的團員最年長紀錄,推進到八十歲。   這位先生靈活的動作,完全不像八十歲。 相處兩天後,我並不意外,他還能走能跳。 懂得收,懂得放。 不逞強,不賣老。 但這幾點,其實有智慧的人都還能作到
在遇見vocus以前,我已經好久好久沒有寫下自己的心情 甚至已經遠久到我想不起來上次寫出自己心情是甚麼時候了 時光飛逝,再回想起那個曾經愛在網路上寫下心情的自己...好陌生 還記得以前打一篇文章,形容一個感受,都是輕輕鬆鬆 甚至還很自傲的覺得自己的用字遣詞很好 但,就在打這篇文章時
雙生— 你的陪伴 在我的認知瓦解的時候 你在一旁 沒有說出你的認知 只是用你的能量 陪伴 在我周圍 沒有說出你的想法 只是陪我去經歷 去體會 你的能量很溫柔 你的陪伴很溫柔 希望我也能用一樣的方式陪著你 任何時候
我在2022/4/13加入方格子。
Thumbnail
在現在這個,眾多人渴望被看見的時代,如果你也擁有自己的自媒體,或者你也是一位創作者,你有沒有想過,你想要被看見的理由是什麼?動機,會決定方向,紀錄片《坂本龍一:終章》讓我認真的思考了這個問題,我想要我的品牌與創作,走到哪裡,留下什麼樣的影響力?
我從未如此深刻地感受到,我與我自己的距離如此遙遠,卻真實存在這個世界。(卡謬) 這篇記錄願意接受治療的自己,謝謝。 - :很多人來唸金大是為了逃離自己的家,你也是這樣子嗎? :不是,我不是單純為了逃家而填金大的,我沒有目標、夢想,我可以因為別人的一句話全都放棄,我越來越感受不到世界的溫度。 - 我已
看著你寫過的mail, 總覺得你的心意需要被紀錄...
至ooo外遇離婚、隱瞞婚姻事實、上網交友,已過了那麼久。 最近因為某件事我又把以前的紀錄調出來看。 一邊和太太說,我愛你;一邊和約會對象說和太太感情不深,想分開,問她有對象嗎?一邊和太太說,想要生小孩,愛妳所以娶妳;一邊和約會對象說,不敢和太太生小孩,結婚只是為了達成目的。這樣一個人。 這樣一個人,
10/3(六)下午接獲醫院通知,長期臥床的大姑突然停止呼吸心跳,由於我們之前有簽不做心肺復甦及急救呼吸器等急救措施,希望氣切插管臥床十年的她,不要繼續受折磨。於是,開啟了我第一次處理親人亡故的經驗。記錄下來的是大姑教我的功課。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
10/22/2020 紀錄 一個月內,我的紀錄就打破了三次。 其實也沒什麼大不了的。 帶團登山的團員最年長紀錄,推進到八十歲。   這位先生靈活的動作,完全不像八十歲。 相處兩天後,我並不意外,他還能走能跳。 懂得收,懂得放。 不逞強,不賣老。 但這幾點,其實有智慧的人都還能作到
在遇見vocus以前,我已經好久好久沒有寫下自己的心情 甚至已經遠久到我想不起來上次寫出自己心情是甚麼時候了 時光飛逝,再回想起那個曾經愛在網路上寫下心情的自己...好陌生 還記得以前打一篇文章,形容一個感受,都是輕輕鬆鬆 甚至還很自傲的覺得自己的用字遣詞很好 但,就在打這篇文章時
雙生— 你的陪伴 在我的認知瓦解的時候 你在一旁 沒有說出你的認知 只是用你的能量 陪伴 在我周圍 沒有說出你的想法 只是陪我去經歷 去體會 你的能量很溫柔 你的陪伴很溫柔 希望我也能用一樣的方式陪著你 任何時候
我在2022/4/13加入方格子。
Thumbnail
在現在這個,眾多人渴望被看見的時代,如果你也擁有自己的自媒體,或者你也是一位創作者,你有沒有想過,你想要被看見的理由是什麼?動機,會決定方向,紀錄片《坂本龍一:終章》讓我認真的思考了這個問題,我想要我的品牌與創作,走到哪裡,留下什麼樣的影響力?
我從未如此深刻地感受到,我與我自己的距離如此遙遠,卻真實存在這個世界。(卡謬) 這篇記錄願意接受治療的自己,謝謝。 - :很多人來唸金大是為了逃離自己的家,你也是這樣子嗎? :不是,我不是單純為了逃家而填金大的,我沒有目標、夢想,我可以因為別人的一句話全都放棄,我越來越感受不到世界的溫度。 - 我已
看著你寫過的mail, 總覺得你的心意需要被紀錄...
至ooo外遇離婚、隱瞞婚姻事實、上網交友,已過了那麼久。 最近因為某件事我又把以前的紀錄調出來看。 一邊和太太說,我愛你;一邊和約會對象說和太太感情不深,想分開,問她有對象嗎?一邊和太太說,想要生小孩,愛妳所以娶妳;一邊和約會對象說,不敢和太太生小孩,結婚只是為了達成目的。這樣一個人。 這樣一個人,
10/3(六)下午接獲醫院通知,長期臥床的大姑突然停止呼吸心跳,由於我們之前有簽不做心肺復甦及急救呼吸器等急救措施,希望氣切插管臥床十年的她,不要繼續受折磨。於是,開啟了我第一次處理親人亡故的經驗。記錄下來的是大姑教我的功課。