程式碼樣式指南¶
本指南包含為 BeeWare 寫程式碼的資訊和指引。
程式碼風格¶
BeeWare 在程式碼庫中遵循 PEP 8 規範,唯獨行長限制從 79 字元放寬至 88 字元。 我們盡可能使用Ruff來強制執行PEP 8規範。當您提交程式碼時,預提交檢查會執行包括Ruff在內的驗證。在可行情況下,系統將自動格式化您的程式碼以符合我們的格式與風格標準。您可設定某些整合開發環境在儲存時自動執行Ruff,這有助於簡化流程。
請記住,PEP 8 最重要的部分是 第 0 節:愚蠢的一致性是小腦袋的妖精。在某些情況下,與 PEP 8 保持一致是沒有意義的,重要的是要了解,在適用的情況下,寫出不符合所列規則的程式碼是可以接受的,有時甚至是首選。在大多數情況下,知道 * 何時 * 與這些規則不一致 * 與保持一致性同樣重要。
這一點在命名規範上可見一斑。BeeWare
函式庫經常需要與其他語言進行橋接。在建構其他語言的封裝函式庫時,最好(在某些情況下甚至必須)遵循目標語言的命名規範,而非 Python
的規範。例如,在呼叫或引用 Java 程式碼時,函式應遵循 Java 偏好的 mixedCase 格式,而非 PEP 8 偏好的 snake_case
格式。
在 API 命名、變數等方面,我們遵循美國的拼寫方式。
此外,PEP 8 還針對 BeeWare 進行了若干補充:
拆分冗長的函式呼叫¶
當包含多個參數的函式呼叫無法置於單一行時,請將每個參數置於獨立的一行,並在最後一個參數後加上逗號。Ruff 允許(並會建議)將多個參數置於同一行並進行換行:
my_function(
arg1, arg2, arg3
)
請勿使用此寫法。相反地,應在最後一個參數後加上尾逗號,將參數分開列於各行:
my_function(
arg1,
arg2,
arg3,
)
分割長字串¶
當字串參數必須跨行分割以符合行長限制時,請將串接的字串文字用括號包起來,以便明確表示該字串是一個單一參數。也就是說,我們建議使用:
my_function(
(
"this is a very long string "
"that is wrapped over two lines"
),
second_argument,
)
翻譯:
my_function(
"this is a very long string "
"that is wrapped over two lines",
second_argument,
)
應避免的事項¶
我們儘量避免使用 utils 模組,但也了解到有時這些模組是無法避免的。比較可取的替代方法是在原始碼的其他地方為功能找地方,而不是使用 utils
模組。
一般而言,我們會盡量避免或延遲執行任何耗費資源的初始化程式碼,以實現更快的應用程式啟動速度。例如,toga-core 套件中的模組採用「延遲載入」機制——僅在被請求時才進行匯入,而非預先全部載入。此設計不僅加速啟動流程,更能精準將資源集中於應用程式實際使用的部分。