[Part I. GIMP基礎功]

[Part II. 一種效果的誕生]
[Part III. Script-Fu的秘密]

13.8 Python 的「可讀性」與 Python-Fu 的正名

Python-Fu 必也註解乎
  • 井號代表註解,而檔頭通常都有數十行以上的註解。
  • 無論是甚麼程式語言,撰寫程式時,都要注意「可讀性」的議題,都要注意如何讓程式易讀、易懂、易維護。


  • Python 程式要容易閱讀與維護,要注意下列四項要領:
    • 命名:要讓變數的命名遵守固定的規則,要讓函數的命名遵守固定的規則。
    • 註解: Python 的註解是用「井號」來表明, Python 的檔頭通常都有註解。
    • 空行: Python 程式碼為了方便閱讀,有些地方使用完全空白的一行,以此突顯特定的一行程式碼,或以此區隔特定的一段程式碼。
    • 對齊: Python 程式碼嚴格規定了對齊的方式。
      • 多數的程式語言,撰寫時,為了方便閱讀,有些地方會加上很多空白,來幫助上下兩行文字的對齊。
      • 對齊 + 空行,是達成縮排機制的方式。
      • 請注意,Python 的縮排是強制的 ,縮排錯誤程式,是無法執行的。


  • 廣義來看,空行、空白算是一種「無言」的註解,其功效不言而喻。


Python-Fu 必也換行乎
  • Python 的特色是「縮排」,以行為單位,區隔不同的敘述(statement)。
  • 以行與行之間的對齊,表示相同區塊(block)的敘述。


Python-Fu 必也正名乎
  • 名,指名份、地位。
    • Python-Fu 的名份與地位,與 Script-Fu 息息相關。
    • Python-Fu 是相對於 Script-Fu ,Python-Fu 的出現,主要是因為,用戶對 Scheme 語法的不熟悉。
    • 因此, Python-Fu與 Script-Fu 在架構上是相同的,只有語法有差異。
    • 要撰寫 Python-Fu ,仍舊需要 Python 物件導向的知識,只是為了讓 Python-Fu與 Script-Fu 架構盡量接近,盡量不要使用 Python-Fu 物件導向的語法。


  • 名,也指命名,名不正則言不順,言不順則事不成。


  • 函式:通常以 pdb.gimp 或 pdb.plug_in 開頭。
    • 一旦仔細研究 Python-Fu ,就會知道 GIMP 內部的程序(函式)的命名規則。
    • 操作英文介面,會比較容易學習 Python-Fu 程式的撰寫,因為程式要用英文撰寫。
    • 例如,pdb.gimp_edit_clear 函式,對應到選單介面的位置
      • 中文選單是 [影像] / 編輯 / 清除
      • 英文選單是 [Image] / Edit / Clear
  • 變數:變數的命名,也有一些固定的規則。
    • img 、image 表示影像變數。
    • 一支 Python 程式,通常只會處理一個影像變數,但可能要處理三、四個圖層。
    • 例如, alien-glow-logo.scm ,改為 Python-Fu 的程式之後,三個圖層變數的名稱,為 logo_layer 、low_layer 、bg_layer 。
  • 參數值的傳遞:要命名的東西真的很多。
    • 每一個對話盒的控制元件,都需要命名,都需要一個變數,來接收與傳遞參數值,都需要解說的字詞,來代表該控制元件。
    • 程式越複雜,就需要花更多心思,替變數取一個好名字。