pretty code

2025年4月4日 星期五

Python 工匠案例、技巧與開發實戰

雖然我是很想直接用 Tcl 單幹寫出現在要寫的 EDA Flow Tool?

不過考量到之後可能要一起協同合作,還是使用最大公約數的 Python 語言?

個人不是寫 Python 的,於是便看了一本買了很久但還沒看的書,也就是如標題所述的書。

不得不說,只要幾百塊的金額,便可以學到原本沒接觸過的知識實在是很划算。

據我之前理解,要稱得上是 Python 進階使用者,大概要知道下面兩個技巧:

01. 生成式的使用
02. 裝飾器的使用

不過,我到現在一個都沒用過。

個人覺得只要能把程式用不同的函數來清楚表達,這樣就已經屌打很多人了XD

因此,我們需要一個方法來檢查我們的函數是否有達到上列目的,剛好這本書在函數這一章節,介紹了一個 package - radon,它可以給函數一個分數,這樣我們就知道函數是否可以改進?

之前做財委時,為了將新補上的歷史資料填上我 Excel 前面的總表分析 sheet,於是便用 Python 寫了一支程式,當然這支程式還有別的功能就是。

總之,目前程式碼為 469 行,下面是我執行 radon cc -s xxx.py 的結果。


從上面可以看到,我有 5 支函數稍嫌複雜,只拿到 B 的分數,原則上最好都拿到 A 的分數是比較好的。


在這 469 行的程式中,扣掉 main 用了 17 個函數,一個函數平均大概不會超過 50 行,即使這樣,也不能保證我每個函數都能拿到 A 的分數。


其中以 adjust_cell_format 最為明顯,雖然行數只有 23 行,但我這支函數拿到的分數最差。

正常來說,應該比照 columns,將對齊方式也用 list 記錄,這樣就可以少掉 42 行與 45 行的 if statement。

但要說這支函數不好懂嗎?我也不太確定,至少這個程式已經是一年多前寫的,當我需要新增功能時,回過頭來再看一次函數也不會有多大困難就是了。

在不斷的思考與自我對話中,程式設計之道也會越來越清楚吧?我想…