簡單是 Python 程式設計的第一要則
本文是 Python 之禪特別系列的第二篇,我們將要關注其中第三與第四條原則:簡單與複雜。
Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y plus rien à retrancher.
It seems that perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away.“完美並非無可增,而是不可減。”
—Antoine de Saint-Exupéry, Terre des Hommes, 1939
程式設計時最常有的考量是與複雜性的鬥爭,只想寫出讓旁人無從下手的繁雜程式碼,對每個程式設計師來講都算不上難事。倘若未能觸及程式碼的簡繁取捨,那麼 《Python 之禪》 就有了一角殘缺。
簡單勝過複雜
尚有選擇餘地時,應該選簡單的方案。Python 少有不可為之事,這意味著設計出巴洛克風格(LCTT 譯註:即誇張和不理性)的程式只為解決淺顯的問題不僅有可能,甚至很簡單。
正因如此,程式設計時應當謹記,程式碼的簡單性是最易丟失,卻最難復得的。
這意味著,在可以選用函式來表達時不要去引入額外的類;避免使用強力的第三方庫往往有助於你針對迫切的問題場景設計更妥當的簡短函式。不過其根本的意圖,旨在讓你減少對將來的盤算,而去著重解決手頭的問題。
以簡單和優美作為指導原則的程式碼相比那些想要囊括將來一切變數的,在日後要容易修改得多。
複雜勝過錯綜複雜
把握用詞的精確含義對於理解這條令人費解的原則是至關重要的。形容某事複雜,是說它由許多部分組成,著重組成成分之多;而形容某事錯綜複雜,則是指其包含著差異巨大、難以預料的行為,強調的是各組成部分之間的雜亂聯絡。
解決困難問題時,往往沒有可行的簡單方案。此時,最 Python 化的策略是“自底向上”地構建出簡單的工具,之後將其組合用以解決該問題。
這正是物件組合這類技術的閃耀之處,它避免了錯綜複雜的繼承體系,轉而由獨立的物件把一些方法呼叫傳遞給別的獨立物件。這些物件都能獨立地測試與部署,最終卻可以組成一體。
“自底建造” 的另一例即是單分派泛函式的使用,拋棄了錯綜複雜的物件之後,我們得到是簡單、幾乎無行為的物件以及獨立的行為。
via: https://opensource.com/article/19/12/zen-python-simplicity-complexity
作者:Moshe Zadka 選題:lujun9972 譯者:caiichenr 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 科學軟體十條簡單程式設計原則程式設計
- 簡單理解非同步程式設計(python)和非同步程式設計(nodejs)非同步程式設計PythonNodeJS
- 簡單介紹架構設計的原則!架構
- “報錯”是程式設計世界中,最簡單的事情!程式設計
- 最簡單的C程式設計--順序程式設計C程式程式設計
- 程式設計師程式設計時的簡單方法與技巧程式設計師
- Python網路程式設計(子程式的建立與處理、簡單群聊工具)Python程式設計
- Python(簡單圖形和檔案處理)程式設計Python程式設計
- 簡單介紹python程式設計之檔案讀寫Python程式設計
- c++簡單程式設計-3C++程式設計
- 風變程式設計,讓程式設計學習更簡單!程式設計
- 【架構設計】保持簡單輕量設計的三個原則——DRY,KISS, YAGNI架構
- 程式設計師簡歷上不準出現精通的潛規則是怎麼來的?程式設計師
- 前端中的簡單程式設計題-字串(1)前端程式設計字串
- Rust 程式設計中使用 leveldb 的簡單例子Rust程式設計單例
- Rust 程式設計,實現簡單的佇列Rust程式設計佇列
- 好程式設計師分享WebService的簡單使用程式設計師Web
- Python Selenium的簡單演示程式Python
- python正則一些簡單匹配Python
- Python語言程式設計 (第11期) 測驗8: 程式設計方法學Python程式設計
- CodeRunner for Mac:讓程式設計更加簡單Mac程式設計
- 簡單學懂鏈式程式設計程式設計
- 簡單認識什麼是UI設計UI
- SpringMVC是如何逐步簡化Servlet的程式設計的SpringMVCServlet程式設計
- 01 Python3程式設計之程式設計語法簡介Python程式設計
- JS高階程式設計第3章--精簡版JS程式設計
- JS高階程式設計第2章--精簡版JS程式設計
- 簡單介紹Python 處理錯誤的原則Python
- 前端中的簡單程式設計題-陣列(2)前端程式設計陣列
- 是程式設計師就用Python查12306的票程式設計師Python
- 電腦科學和Python程式設計導論(三) 一些簡單的數值程式Python程式設計
- 簡單學:併發程式設計之 ThreadLocal程式設計thread
- 好程式設計師Python培訓第10講:字串的使用程式設計師Python字串
- python UDP程式設計是什麼意思?PythonUDP程式設計
- Python設計模式的六大原則分別是什麼?Python設計模式
- 設計原則之【單一職責原則】
- PHP-RBAC單角色設計-最簡單的設計方案PHP
- Proteus實現簡單51程式的設計與模擬