Linux中國

編寫 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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國