編寫 Python 代碼時要有所取捨

本文是 Python 之禪特別系列的一部分,重點此篇着眼於第七、八、九條原則:可讀性、特殊情況和實用性。

軟件開發是一門充滿了取捨的學科。每一個選擇,都有一個同樣合理但相反的選擇。將一個方法私有化?你在鼓勵複製粘貼。將一個方法公開?你在過早地對一個接口做出承諾。

軟件開發者每時每刻都在做艱難的選擇。雖然 Python 之禪 中的所有原則都在一定程度上涵蓋了權衡,但下面的原則對一些權衡進行了最艱難、最冷酷的審視。

可讀性很重要Readability counts

從某種意義上說,這一中間原則確實是整個 Python 之禪的中心。這條原則與編寫高效的程序無關。在大多數情況下,它甚至與編寫健壯的程序也無關。它講的是編寫出別人能讀懂的程序

閱讀代碼,就其本質而言,發生在代碼被添加到系統中之後。通常,它會發生在很久很久以後。忽略可讀性是最簡單的選擇,因爲它對現在沒有傷害。無論添加新代碼的原因是什麼,它都會對現在造成影響,無論是一個令人痛苦的 bug 還是一個被強烈要求的功能。

如果面對巨大的壓力,把可讀性扔到一邊,只管“解決問題”,而 Python 之禪提醒我們:可讀性很重要。編寫代碼讓它適合閱讀,無論是對自己還是他人,都是一種慈悲。

特殊情況不足以違反規則Special cases aren't special enough to break the rules

總是有各種藉口:這個 bug 特別麻煩,先簡單處理一下吧;這個功能特別緊急,別管美觀了;這種情況下所涉及的領域規則特別複雜,嵌套深點也沒關係。

一旦我們對特例的藉口妥協,大壩就會破裂,就喪失了原則;事情就會演變成一個瘋狂麥克斯的荒誕症,每個程序員都會爲自己試圖找到最好的藉口。

紀律需要承諾。只有當事情艱辛、有強烈的誘惑時,纔是對一個軟件開發人員的考驗。總是有合理的藉口來破壞規則,這就是爲什麼必須堅守規矩的原因。紀律就是向例外說不的藝術。沒有任何解釋可以改變這一點。

雖然,實用性勝過純潔性Although, practicality beats purity

“如果你只想着擊打、彈跳、撞擊、觸碰敵人,你將無法真正打倒他。” —— 《宮本武藏:水之卷

歸根結底,軟件開發是一門實用的學科。它的目標是解決真實的人所面臨的實際問題。實用性比純粹性更重要:首先,我們必須解決問題。如果我們只考慮可讀性、簡單性或美觀性,我們將無法真正解決問題

正如宮本武藏所說的,每一次代碼修改的首要目標應該是解決問題。這個問題需要我們心心念念地去解決它。如果我們不以解決問題爲目標,只想着 Python 之禪,我們就辜負了這些原則。這是 Python 之禪所固有的另一種矛盾。


via: https://opensource.com/article/19/12/zen-python-trade-offs

作者:Moshe Zadka 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章