筆者讀完這節腦中馬上浮現以前在恐龍本(作業系統)上看到的種種 Virtual Memory, Scheduler 相關概念... 不得不佩服原作者在那個年代竟然能自行領悟出這些東西... (跪)
「派遣決定的程式碼是由非常聰明的人設計及編寫的,但他卻不是一位善於溝通者。編寫程式碼的過程是被這樣描述的:『盯著天花板看三個星期,然後有兩天程式碼就從他身體的每個洞湧出來了 - 然後他就辭職了』」
「沒有人理解這個程式碼。最後,我們的管理階層告訴我們,要鎖住這些程式碼並且永遠不要修改它。程式碼被正式宣告僵化了」
「這次經驗帶給我的是,良好、整潔的程式碼的價值」
「在 8085 Assembler 中寫 Code 可一點都不好玩。我聽說有一種在貝爾實驗室大量使用的『新』語言。他們稱它為『C』。我對這種語言的簡單優雅感到震驚,它沒有犧牲組合語言的能力,並使用更方便的語法來提供同等的能力。我變心了」
「現在唯一的問題是,面對一群組合語言程式設計師,如何說服他們應該使用 C 語言。但這是另一個噩夢般的故事......」
「當時我認為我的架構很優秀。當然,MIKE 認為他的比較好。當然最後,兩個人都工作得很好。我意識到,軟體架構可以大不相同但同樣能發揮作用」
「當然,維護頻率逐年上升」
「這是我了解到『資料庫』是該與『系統的整體業務目的』隔離的原因之一,也是我不喜歡強烈耦合到第三方軟體系統的原因之一」
註: 我們的雇聘合約清楚表示,我們發明的任何東西都屬於公司。我的老闆告訴我:「你用一美元把它賣給了我」
「太陽底下沒有新鮮事」
「這是一間新創公司,我們每週工作 70 到 80 個小時。我們有願景。我們有動力。我們有意願。我們有能力。我們有專業知識。我們擁有股權。我們夢想成為百萬富翁。我們有夠荒謬」
「所以我們寫程式。寫程式。寫程式。但三年後,我們沒能做到的是賣出產品。市場對於我們的宏偉願景並不特別感興趣」
正好筆者學生時期有過幾次參與創業團隊的相關經驗,實驗室也曾與國內某量化交易新創公司密切合作過一小段時間。筆者看完這一節饒是特別有感觸。也許正因為荒謬,所以才叫青春吧 (笑)
新創公司裡有一名年輕研究員,給每個人都取了綽號。於是作者成為了 Uncle Bob
「最終,我意識到這是一個非常好的品牌」
「當我學習時,也開始在 Netnews 上進行辯論。正是在這些辯論中,奠定了 SOLID 原則的基礎。所有的辯論,甚至是某種意義上的,都引起了我的注意......」
最後,作者"疑似"因為在 Netnews 上的發言而被獵人頭挖角
「熱血充滿了我的臉。我知道這代表什麼。這是 Grady Booch 的公司。在我面前,我看到了與 Grady Booch 合作的機會!」
「但我們得到的是一個巨大的、緩慢的、侵入性的、昂貴的第三方框架。使我們的生活如同地獄一般」
「實際上,最大的錯誤是 『過度架構 (Over-Architecture)』 。層數比我在這裡描述的還要多許多,這大大降低了團隊的生產力。整個工具被廢棄了,取而代之的是一個小團隊所編寫的一個可愛小應用程式」
「所以我了解到,偉大的架構有時會導致嚴重的失敗。架構必須足夠靈活以適應問題的規模」
P.S. 以中文來說,過度設計 (Over Design) 會有比較多的相關文章出現
「我們學到了一個很好的教訓:在第一次創造可重用的框架之前,你無法創造可重用的框架。要把它與幾個可重用的應用程式一起建置」
「我希望的是,你會喜歡我在回憶之路上這次小小的旅行;並且一路上你可以學到一些東西」
「當然,這只是部分歷史。我還經歷了許多其他的專案。而我有意地將歷史停止在1990年代初期 - 因為我還有另外一本書是用來描述1990年代後期的事件...」
取自: Clean Architecture (p.305)
P.S. 讀者們是否注意到,本書幾乎都沒有提到 「敏捷 (Agile)」 這個關鍵字? 有興趣的可自行參見 Robert C. Martin 的另一本書: 「無瑕的程式碼 敏捷完整篇:物件導向原則、設計模式與C#實踐」
非常感謝各位讀者追蹤到此,這是我第一次參加鐵人賽,也是第一次嘗試在網路上將自己的心得整理成文章發表。真的從中獲益良多...
這 30 天裡,利用下班之餘,讀了近 800 頁的內容。好幾次加班回家後都只想躺平,但還是決定拿起書來翻閱,一邊 Google 查閱補充資料。讀完 Clean Code & Architecture 後,上班時間看著公司專案,慢慢地能理解那些以前似懂非懂的架構,甚至開始能從中嗅到程式碼的氣味 (Code Smell)、對於如何重構那些 "Legacy Code" 也開始有了點想法...
最大的感動大概就如鐵人宣言裡所述 「原來,我做得到」
有一點還是對讀者感到很抱歉,到開賽的第二周以後其實文章的完成度就普遍下降很多,甚至到後期常常只有大小標題 + 引言而已。我不選擇把各章節拆散到每一天、也不過度簡化書中內容 (甚至會補充點圖片或 Keywords),只希望能盡可能地將 Clean 系列書所提及的理念推廣給各位讀者們
接下來我預計會再花 30 天把未寫完的內容補齊
終於可以留言了! 太棒的分享了,期待你完成整個系列!!
謝謝 > < 目前補到 Day 03: 命名~