kyo
kyo

back to basics 🌱 blog.kyomind.tw

在天瓏買了兩本 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.

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…
加载中…

发布评论