發表文章

目前顯示的是有「讀書心得」標籤的文章

2019 回顧工作與學習歷程

圖片
2019 回顧前言 2019 年可以說是既充實又偷懶的一年。為什麼呢?因為花了很多時間在學習理論知識,包含:重構、整潔架構、單元測試、領域驅動開發、行為驅動開發 …等等。雖然每個知識看起來像是完全獨立的領域,但對 2019 的我來說,它們都是應付 Legacy Application 的利器。 為什麼又說偷懶?部落格和作品幾乎停擺!學習知識理論不像學習新技術,能把應用新技術的步驟分享到部落格上。因為理論知識必須經過堆疊和內化才能在真實專案中落地實踐。再加上這一年很 榮幸受邀到高雄科技大學,帶領一批資工系的學生學習 PHP 式設計課程 ,備課與上課的時間幾乎吃掉了三個月的休閒時間,也就是平常能用來自學或練習的時間 …

讀書心得:Laravel 框架關鍵技術解析

圖片
書本連結 摘要 作者帶領讀者一探 Laravel 的原始碼,從框架技術角度介紹 Laravel 構建的原理,包含:框架的設計思想、如何應用新潮的 設計模式 與 依賴注入容器 建立框架。 心得 本書深度相當足夠,作者以幾乎逐行的慢節奏帶領讀者解讀原始碼。且不只介紹原始碼做了哪些事情,更帶出設計思維、理念。另外講解 PHP 新特性、解析設計模式等進階的用法時也不含糊。只要有花時間投入這本書,一定會學到不錯的設計觀念。 推薦度:3 難易度:3 適合讀者:設計模式初學者、Laravel 開發者 其他:學 Laravel 框架的人必學 可學習議題:Laravel 框架、設計模式、軟體設計思想、依賴注入容器原理 ​

讀書心得:遺留系統重建實戰

圖片
Re-Engineering Legacy Software 書本連結 心得: 本書介紹如何處理一個遺留系統。相較一般重構技術的書籍,此書包含的議題更廣,包含: 如何決策重構還是重寫 、 利用 CI 工具系統性的追蹤重構成效 、 在團隊中傳播重構的知識 。 本書花較多篇幅在上述議題中,重構技術、技巧層面的知識則篇幅相當少。 但也因為本書的議題廣泛不拘泥於重構技術與技巧, 更讓讀者體會系統持續重構後的大藍圖 以及如何利用其他工具強化重構的成效。 適合讀者:學習重構、CI\CD 的 RD 前置知識:重構 其他: 可學習議題:重構、CI\CD、敏捷開發 ​

讀書心得:Python 設計模式深入解析

圖片
書本連結 摘要: 本書快速帶領讀者以真實世界中的範例學習每一種設計模式。本書一共有 16 種設計模式,每個模式 都會有小篇幅的介紹意圖、使用場景、範例程式碼。 注意: 本書是透過 Python 的語法特性實踐設計模式,而非只是承襲那些來自 Java 或 C# 的實作。 心得: 這本書很適合入門設計模式,作者用簡單易懂的文字講解每個 模式的意圖、使用場景 。並設計難易度適中的範例來示範如何使用每個模式。 相較過於抽象/簡單的範例,如形狀、汽車等等,本書的範例更容易理解引入設計模式的優勢。 本書可以算是展示設計模式的書,故深度不深 ,只能學到設計模式的基礎概念、表面知識。沒有程式「設計思想」的層面,故讀完此書仍無法在自己的專案中引入設計模式是很正常的。 適合讀者:剛入門設計模式的人 其他: 可學習議題:設計模式、Python 延伸書籍: 設計模式的解析與活用 kent beck 實作模式(Implementation Patterns) 重構與模式 ​

讀書心得:JavaScript 設計模式與開發實踐

圖片
書本連結 摘要: 本書分成三大部分,分別為:基礎知識、設計模式、設計原則和程式設計技巧。 基礎知識: 如何用 JavaScript 實現設計模式的關鍵步驟、技術與知識。 設計模式: 使用 JavaScript 實現 14 種設計模式。 作者為了讓讀者了解 設計模式的實作方式有很多種 ,更是加碼每個模式都用兩種方式實作: 用 JavaScript 語言特性實現設計模式 用 JavaScript 模仿物件導向 Class 介面的風格實現設計模式 設計原則和程式設計技巧: JavaScript 不但可以應用物件導向 SOLID 原則,SOLID 在設計良好程式時同時也扮演相當重要的角色。 心得: 相當推薦入門學習設計模式的開發人員。 這本書是中文原文書,作者曾探是來自中國的資深工程師。 因此作者講解物件導向、設計模式的核心觀念時不需要語言轉譯。 少了語言的隔閡,加上作者精闢易懂的解說,讓讀者更容易理解設計模式。 此外,作者本身功力很深,書中不單單只有介紹設計模式這麼簡單,作者經常傳授高手的程式設計思維,並且總是點出關鍵重要的知識,也讓這本書變得更值得一看。 缺點: 由於出版日期較早,書中 JavaScript 的語法可用 ES6 取代。但書中傳遞的觀念絕對值得一看。 適合讀者:想入門設計模式的 RD、JavaScript 開發者 其他: 可學習議題:JavaScript、設計模式 ​

自學技巧,與難易度相關的讀書技巧

圖片
與難易度相關的讀書技巧: Tips 1: 若一直花時間讀太簡單的書,表示沒有累積新知識,只是在浪費時間 。 讀書目的是累積知識量、增進新觀念。 這時應該挑戰困難、進階一點的書。 Tips 2: 若 看不懂作者部分的內容,表示你跟作者仍不在同一個知識水平 。 這時需要找別的資源(網路文章、別的書籍)補充知識。 Tips 3: 若 看不懂作者一半的內容,表示跟作者的知識水平相差太多 。 這時應該放下手上的書,先學習 前置知識 再回來挑戰。 Tips 4: 不要讀到不懂詞彙的就立刻停下來查資料 。 應先快速讀過整本書、章節,讓大腦快速建立 書中的知識概念、詞彙關係 。 大腦建立起 詞彙關係 後,再回來查資料會更容易理解。 其他: 學習新知識的過程總是辛苦… ​

自學選書技巧、推薦程度說明

圖片
自學時常要 K 書培養知識,但是在資訊大爆大的時代,書籍的數量跟網路文章一樣多,品質也參差不齊。因此選書需要謹慎,若不仔細挑書就容易變成浪費時間。 平時選書會透過「 題材/範圍、深度、作者文筆、翻譯品質 」來決定要不要購買或花時間讀下去: 題材/範圍: 快速讀過目錄,檢查書本內容是不是圍繞在你有興趣的主題。 深度: 快速翻閱書籍內容,檢查書本的深度/難易度是不是符合你現在的需求。若深度太淺、太簡單則表示你不需要花太多時間閱讀這本書。反之深度太深、太困難,表示應該花時間學習前置知識。 作者文筆: 此項決定知識的吸收效率。快速檢查大小章節的前後順序,以及內文是否與章節有關聯。 作者若有系統性的把書籍章節、內文結構設計妥當,由淺入深。則閱讀書籍速度跟吸收知識都會很快。 若作者沒辦法有結構、系統性得組織知識,在閱讀書籍時,你必須時常前後反覆翻閱,並搭配網路搜尋文章補充知識,把破碎的知識從書中整理到腦海裡。 翻譯品質: 程式相關的書籍,多半是國外原文翻譯的書,若翻譯品質很差,輕則看得出戲(有些翻譯與句很怪,根本不像中文),重則扭曲作者原意,誤導讀者學習不對的觀念。 若遇到翻譯品質差的書籍,可以改換簡體書看(換譯者)或者搭配原文書一起看。 ​

單元測試的藝術

圖片
The Art of Unit Testing: with examples in C#, 2/e 書本連結 摘要: 本書涵蓋了撰寫單元測試的基本知識,包含如何撰寫單元測試、使用隔離(模擬)框架,以及讓它們變得可維護、可讀、可被信任。並且講解在真實世界撰寫、管理和維護單元測試的最佳實踐。 心得: 第一、二章: 作者示範一個良好的單元測試應該具備哪些條件。 第三、四章: 作者以設計單元測試的角度,引用 Working Effectively with Legacy Code 的接縫技術講解如何透過接縫技術建立偽物件,讓單元測試的受測對象(SUT)可以隔離依賴,達到快速、獨立原則。 接縫技術是針對 Legacy Code 無法執行單元測試的處理手段 ,由本書的角度來學習接縫技術,會覺得為什麼要繞一大圈只為了產生偽物件(Stub/Mock)。因此建議直接去看 Working Effectively with Legacy Code 如何使用接縫技術讓多種情境的 Legacy Code 可執行單元測試。 第五章: 使用模擬(Mock)框架來取代三、四章節的接縫技術。 覺得此章節的安排不太洽當, 接縫技術是針對 Legacy Code 無法執行單元測試的處理手段 ,作者卻以取代接縫技術的角度來介紹模擬框架,可能讓讀者誤以為接縫技術是過時的測試手段。 也許是本書出版的年代較早 (1/e: 2009、2/e: 2013),但現今的測試框架搭配模擬框架已經相當普及。若要講解模擬技術時,應該直接講解模擬框架即可,把接縫技術跟模擬技術分開講應該會更好!。 第七、八、九、十、十一章節: 介紹開發團隊在實務中如何進行單元測試,包含如何安排單元測試的檔案、舊系統引入單元測試的策略、如何讓單元測試好維護..等等。 若您的團隊還不了解怎麼進行單元測試,則相當推薦閱讀這些章節。 總結: 本書的深度不深,作者把讀者設定為單元測試的新手,從 0 開始講解單元測試,書中的內容大多是針對不良測試案例的叮嚀。 推薦給想學習單元測試又對單元測試不了解的工程師,本書將單元測試應該具備的概念都教完了,讀過後應該能少走不少歪路。 適合讀者:對單元測試不了解的工程師 可學習議題:單元測試技術 延伸學習:測試驅動開發(TDD)、行為