在天瓏買了兩本 Python 新書與一生的追求

藝 FUN 券使用期限到今年 4 月 30 日,身為有中籤的小小幸運兒,我也得把握時間緊趕把它消費掉了。
對於軟體工程師而言,走一趟天瓏書局無疑是個絕佳的選擇,畢竟書是買不完的。
買書的考量
書確實是買不完的,但如果買了也沒怎麼看,大量堆積在房間裡妨礙走路,那可就適得其反了 — 望向已經累積了 5、6 本的 JavaScript 書籍。
簡單來說,還是買一些「 近期用得上 」的書吧!
所謂的「近期」如果真要講個具體,大概指 3 個月左右,3 個月以上才可能派上用場的書,還是先別買了,而我的 JavaScript …
而這裡的「用得上」也不限於工作,就像我在〈 Docker 新手入門:書與線上課程推薦 〉說的:
入門 Docker 最好具備的前提就是有一個實際的 Docker 相關需求 ,可能是工作上的,也可能是自己的 side project(專案容器化),甚至是為了寫文章!空手學習並不太推薦。
其實學什麼都差不多 — 應用場景很重要。
兩本 Python 新書介紹
大概逛了半小時後,還是決定下手兩本 Python 書籍,且不約而同都和「 clean code」有關。說真的,「 clean code in Python 」這類主題,如果市面上有 100 本,我就能買好買滿 100 本!這主題對我存在著中毒般的魔力。
有機會再來聊聊我對「 程式可讀性 」為何如此痴迷,不止是說說而已。講到這裡不禁想到,被我 code review 的同事們是曾在某些時刻於腦海中掠過一絲殺意? — 畢竟我對程式碼品質的要求著實不低。
扯遠了,還是回到書本身,在此簡單介紹一下這兩本書:
《 Python 出神入化:Clean Coder 才懂的 Pythonic 技法,為你的程式碼畫龍點睛! 》
如果沒有副標題,還真不知道這本書到底是要講述 Python 的哪個面向,簡直是外國電影命名法!其實原文名就是《 Clean Code in Python 》,有放在書的封面作為補充,大概編輯也自知只放主標題會讓人不知所謂。
作為 clean code 類的 Python 書籍,這個翻譯書名簡直就是個經典的反面教材:模糊的變數命名(書名)。 以至於封面上又不得不加上一堆文字來補充說明。
是不是像極了程式碼中,因為變數或函式的命名不佳,而作繭自縛般地為它寫了一行又一行的程式註解來亡羊補牢呢?
反觀,本書第一版譯名就叫《 簡潔的 Python 》,你看,是不是很簡潔!貼切的書名一望即知,這才是好的命名示範。新版換了出版社,命名風格也跟著魔幻了起來。話雖如此,這封面我是還挺喜歡的,尷尬的命名就權當作是編輯的巧思吧。
書我還沒翻,但第一版我有買,也大致看完一輪。不得不說有一定的難度 — intermediate 以上,差不多是《 流暢的 Python 》那個等級,所以並不適合入門者。
《 強健的 Python|撰寫潔淨且可維護的程式碼 》
本書去年 8 月英文版才剛上市,現在就有繁中,出社版可謂誠意十足!
入手前仔細看了一下目錄,從目錄可知,這本和上一本雖然都有著「clean code」字眼,但切入的角度截然不同 ,比較是從 code infrastructure 層級(你可以想成 linter 層級)加以規範,來建構良好的 Python 程式碼。
內容有大量篇幅都在講述如何正確使用 type hints,包括介紹專用的 linter —— mypy,以及最近因為 FastAPI 也跟著火紅的 pydantic 。
光想想是不是就有點小興奮了呢?
小結:一生的追求
光兩本書就有兩種截然不同的角度可以增進程式碼品質,足見「clean code」一詞遠遠不像它字面上那般「simple」,需要認真著墨與不斷思考、練習面向很多。
就像《 棋魂 》中,已成為職業棋士的配角本田敏則,在練習局中慘敗於社清春的「第一手天元」後,他的老師嚴肅提醒並勉勵他說:「職業的道路很長,不但長,而且沒有終點,一生都在學習。」
對於每一個有志於寫出 clean code 的你我而言,又何嘗不是一生的追求?而最最基本的當然還是先善用好 linter 與 formatter,行有餘力,再來好好鑽研這些迷人的「寫作技藝」,進而體會知覺與快樂的螺旋 。
Originally published at blog.kyomind.tw on March 26, 2022.
Like my work? Don't forget to support and clap, let me know that you are with me on the road of creation. Keep this enthusiasm together!