狂奔 lion

          自強不息

          編程的6個原則

          原作:Joseph Ottinger, 來自近日的theServerSide,本文是譯文。

          原作網(wǎng)址:http://www.theserverside.com/news/thread.tss?thread_id=42598


          Empathy Boxblog中介紹了編程應(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

          評論

          # re: 編程的6個原則 2006-10-13 22:34 馬嘉楠

          這個是要頂要收藏的,^+^  回復(fù)  更多評論   

          # re: 編程的6個原則 2006-10-18 15:28 123bingbing

          增開7群,號碼 30440732
          8群 30756649
          9群 30178567
          10群 28694497

          我們的qq群:15096318 學(xué)習(xí)程序的都可以來
            回復(fù)  更多評論   

          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          公告

          本人在blogjava上發(fā)表的文章及隨筆除特別聲明外均為原創(chuàng)或翻譯,作品受知識產(chǎn)權(quán)法保護并被授權(quán)遵從 知識分享協(xié)議:署名-非商業(yè)性使用-相同方式共享 歡迎轉(zhuǎn)載,請在轉(zhuǎn)載時注明作者姓名(楊一)及出處(www.aygfsteel.com/yangyi)
          /////////////////////////////////////////
          我的訪問者

          常用鏈接

          留言簿(5)

          隨筆分類(55)

          隨筆檔案(55)

          相冊

          Java

          其他技術(shù)

          生活

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          自強不息


          用心 - 珍惜時間,勇于創(chuàng)造
          主站蜘蛛池模板: 河南省| 同心县| 龙井市| 临邑县| 南投县| 博客| 准格尔旗| 平阴县| 济南市| 榆树市| 敖汉旗| 彰化县| 泾川县| 壤塘县| 南雄市| 景德镇市| 上高县| 油尖旺区| 邵东县| 伊宁县| 谷城县| 甘肃省| 富锦市| 岳池县| 丰台区| 当涂县| 巴青县| 秦皇岛市| 德化县| 蒙山县| 志丹县| 盖州市| 长垣县| 上饶县| 淅川县| 德清县| 太仆寺旗| 侯马市| 泾阳县| 同德县| 达州市|