剛在逛CPyUG時看到了個主題討論python的八榮八恥,見:[http://bit.ly/4jeBor](http://bit.ly/4jeBor), 主題內容如下:
以動手實踐為榮,以只看不練為恥。?
以打印日志為榮,以單步跟蹤為恥。?
以空白分隔為榮,以制表分隔為恥。?
以單元測試為榮,以手工測試為恥。?
以代碼重用為榮,以復制粘貼為恥。?
以多態應用為榮,以分支判斷為恥。?
以Pythonic為榮,以冗余拖沓為恥。?
以總結思考為榮,以不求甚解為恥。
總結地相當精辟啊,下面談下我個人的理解:
1、以動手實踐為榮,以只看不練為恥。?
?對于編程這活來說,這絕對是真理中的真理,任何編程語言學習均是如此,動手敲一下,編譯、調試一把,才能對語言的細節有更深入的了解。好多東東看似簡單,做起來可能更本不是那么一回事。所以,動手,必須的。
2、以打印日志為榮,以單步跟蹤為恥。?
這句嚴格來說個人不太贊同,對于一個成熟的軟件,記錄日志是最基本的,但在開發過程中,僅僅通過日志來分析并不是一個非常好的辦法,通常單步跟蹤比日志能更快地找出缺陷所在。
3、以空白分隔為榮,以制表分隔為恥。?
?絕對支持,我所在公司這條是最基本的編程規范,像自己平時用Source Insight編碼,將TAB鏈設置為4個空格,好多的IDE或編輯器均有此選項設置,所以這個工具可以幫助我們解決。?
4、以單元測試為榮,以手工測試為恥。
這句我覺得沒有寫好,這里的手工測試定義不明確,單元測試個人通常使用單步跟蹤,這脫離不了手工,與之相對的就是自動化測試,我理解這里說的是不是TDD(敏捷中的測試驅動開發)。不太明白。
5、以代碼重用為榮,以復制粘貼為恥。?
這句真理,復制粘貼很容易造成好多冗余代碼,使用代碼越來越不好維護。
6、以多態應用為榮,以分支判斷為恥。?
做為面向對象的語言,合理地運用多態無可厚非,因為個人工作使用C,對存在多個分支判斷時,通常會使用驅動表,這也不失為一個好辦法。
7、以Pythonic為榮,以冗余拖沓為恥。?
什么是Pythonic呢,看這里:[http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0](http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0),有讀者翻譯了下,中心思想如下:簡單、清晰,不要過分強調技巧,盡量使用 Python 已經提供的功能以及符合Python的思維方式。目前個人離這個境界還相距甚遠啊。
8、以總結思考為榮,以不求甚解為恥。
與1一樣,真理中的真理,不僅編程,凡事均應如此啊。
最后,附一個python的禪:
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>>?
- 前言
- Python:實現文件歸檔
- Pyhon:按行輸出文件內容
- Python:讀文件和寫文件
- Python:實現一個小算法
- Python:通過命令行發送新浪微博
- Python:通過攝像頭實現的監控功能
- Python:通過攝像頭抓取圖像并自動上傳至新浪微博
- Python:簡單的攝像頭程序實現
- Python:日志模塊logging的應用
- Python:操作嵌入式數據庫SQLite
- Python:將句子中的單詞全部倒排過來,但單詞的字母順序不變
- Python:語音處理,實現在線朗讀RFC文檔或本地文本文件
- Python:通過計算階乘來學習lambda和reduce這兩個函數的使用
- Python:通過執行100萬次打印來比較C和python的性能,以及用C和python結合來解決性能問題的方法
- Python:使用matplotlib繪制圖表
- Python:使用pycha快速繪制辦公常用圖(餅圖、垂直直方圖、水平直方圖、散點圖等七種圖形)
- Python:使用pycha快速繪制辦公常用圖二(使用樣式定制個性化圖表)
- Python:監控鍵盤輸入、鼠標操作,并將捕獲到的信息記錄到文件中
- Python:通過獲取淘寶賬號和密碼的實驗,來看登陸方式選擇的重要性
- Python:通過獲取淘寶賬號和密碼的實驗,來看登陸方式選擇的重要性(二)
- Python:通過遠程監控用戶輸入來獲取淘寶賬號和密碼的實驗(一)
- Python:通過遠程監控用戶輸入來獲取淘寶賬號和密碼的實驗(二)
- Python:通過自定義系統級快捷鍵來控制程序運行
- Python:通過自定義系統級快捷鍵來控制程序開始或停止記錄日志(使用小技巧解決一個貌似無解的問題)
- Python:一個多功能的抓圖工具開發(附源碼)
- Python:程序發布方式簡介一(打包為可執行文件EXE)
- Python:新浪微博應用開發簡介(認證及授權部分)
- Python:程序最小化到托盤功能實現
- Python:實用抓圖工具開發介紹(含需求分析、設計、編碼、單元測試、打包、系統測試、發布各環節)
- Python:桌面氣泡提示功能實現
- Python:未來三個月的python學習計劃
- Python:pygame模塊及SDL庫簡介
- Python:獲取新浪微博用戶的收聽列表和粉絲列表
- Python:pygame游戲編程之旅一(Hello World)
- Python:pygame游戲編程之旅二(自由移動的小球)
- Python:pygame游戲編程之旅三(玩家控制的小球)
- Python:pygame游戲編程之旅四(游戲界面文字處理)
- Python:pygame游戲編程之旅五(游戲界面文字處理詳解)
- Python:pygame游戲編程之旅六(游戲中的聲音處理)
- Python:pygame游戲編程之旅七(pygame基礎知識講解1)
- Python:編程“八榮八恥”之我見
- Python:腳本的幾種執行方式
- wxPython:簡單的wxPython程序
- wxPython:簡單的wxPython程序的另一種寫法
- wxPython:應用程序對象介紹
- wxPython:輸出重定向
- wxPython:關閉wxPython程序
- wxPython:Frame類介紹
- wxPython:面板Panel的使用
- wxPython:工具欄、狀態欄、菜單實現
- wxPython:消息對話框MessageDialog
- wxPython:文本對話框TextEntryDialog
- wxPython:列表選擇框SingleChoiceDialog
- wxPython:事件處理介紹一
- wxPython:事件處理介紹二
- wxPython: 簡單的繪圖例子
- wxPython:狀態欄介紹
- wxPython:菜單介紹
- wxPython:文件對話框wx.FileDialog
- wxPython:顏色選擇對話框wx.ColourDialog
- wxPython:布局管理器sizer介紹
- wxPython:啟動畫面SplashScreen介紹
- wxPython:繪畫按鈕BitmapButton介紹
- wxPython:進度條Gauge介紹
- Python: 發送新浪微博(使用oauth2)
- Python:讀取新浪微博收聽列表
- Python:DNS客戶端實現