編程的6個原則
原作:Joseph Ottinger, 來自近日的theServerSide,本文是譯文。
原作網(wǎng)址:http://www.theserverside.com/news/thread.tss?thread_id=42598
Empathy Box在blog中介紹了編程應(yīng)該注意的5個問題,這篇文章實際表述了編程時應(yīng)引起注意的很重要的6個思想:
快速失敗;寫更少的代碼(不要讓自己重復(fù));程序是寫給人看的;做正確的事情;消減狀態(tài);了解你的“創(chuàng)造”
(fail fast, write less code (and don't repeat yourself), computer programs are for people, do the right thing, reduce state, and know your 'stuff.')
快速失敗:當(dāng)程序出現(xiàn)問題時,產(chǎn)生大的、可見的、不可忽視的異常。以防止不明顯的bug一遍遍逃過QA的檢查。把隱藏在深處的問題暴露出來。
寫更少的代碼(似乎是理所當(dāng)然的):去除冗余,即把程序所要解決的問題展示得更加清晰、明了。
程序是寫給人看的:即“學(xué)識編程”(Literate Programming),我們程序的讀者是其他的人而不是編譯器。我們知道c/java/lisp/haskell這些編程語言并不比簡單的匯編更加強大,之所以我們使用它們,是因為它們的表述更加清晰,更不容易范些低級的錯誤。沒有任何一個程序能做到只能用一種書寫,而不能用另一種,而且,這些語句,最終都要被翻譯成機器指令(有些在運行期,有些在編譯期,不過都不重要),如此說來,我們使用高級程序設(shè)計語言的唯一理由就是——和人進行交流。Don Knuth寫下了這個想法,并把它命名為“Literate Programming”,他還設(shè)計了一個叫WEB的系統(tǒng),他的想法非常出色,但他的實現(xiàn)卻很糟糕。他的想法是:在程序中加入一篇說明程序是如何運行的的文章。
做正確的事情:實際編程去讓正確的程序去做正確的事情,而不是寫一個看似正常工作程序。
我知道最佳的解決方案,但需要改變許多東西。在我的經(jīng)驗里,經(jīng)常有讓你做錯誤事情的機會:計劃、經(jīng)理、合作者,甚至是參與到項目中來的客戶,這些群體都想盡快看到你的可以工作的程序,他們并不關(guān)系你是如何寫這些程序的。但除了事實上寫這些程序的程序員外,沒有人知道,在編碼過程中所作的權(quán)衡、割舍。然后隱藏在代碼背后的問題就會像圣誕節(jié)的幽靈一樣以P0
bugs的形式出現(xiàn)(P0
bug:致命缺陷——譯者注)。最終,我不得不頂著上面巨大的壓力,帶給公司更多的花費。讓早就該做好的程序去做正確的事情。
消減狀態(tài):即簡化代碼,尤其要注意并發(fā)的情況,這時會出現(xiàn)如:x.equals(x)這樣的奇怪代碼,而且在一些特殊的情況下會返回false,當(dāng)然,這取決于x.equals(Object)是怎樣編碼的。
了解你的“創(chuàng)造”:正如可工作的解決方案總是你嘗試的最后一個解決方案一樣,無法診斷的bug總是存在于你還不了解的軟件層中。你必須去了解直接包裹在你代碼周圍的那些層——對于大多數(shù)程序員來說,這可能意味著要從操作系統(tǒng)開始。如果你從事底層編程,你很可能還要了解一些計算機體系結(jié)構(gòu)。但這個觀點比直接找到隱藏的bug要大,主要用來清除那些不易解決的問題,一個了解操作系統(tǒng)內(nèi)核的人,一定有能力去解決他們遇到的絕大多數(shù)問題。
@2008 楊一. 版權(quán)所有. 保留所有權(quán)利
posted on 2006-10-13 22:03 楊一 閱讀(1614) 評論(2) 編輯 收藏 所屬分類: Other Tech