Unix哲學(Unix編程藝術(shù))

Doug Mcilroy:

1.讓每個程序就做好一件事。如果有新任務(wù),就重新開始,不要往原程序中加入新功能而搞得復(fù)雜。

2.假定每個程序的輸出都會成國另一個程序的輸入,哪怕那個程序還是未知的。輸出中不要有無關(guān)的信息干擾。避免使用嚴格的分欄格式和二進制格式輸入。不要堅持使用交互式輸入。

3.盡可能早地將設(shè)計和編譯的軟件投入試用,哪怕是操作系統(tǒng)也不例外,理想情況下,應(yīng)該是在幾星期之內(nèi)。對拙劣的代碼別猶豫,扔掉重寫。

4.優(yōu)先使用工具而不是拙劣的幫助來減輕編程的負擔。工欲善其事,必先利其器。

5.一個程序只做一件事,并做好。程序要能協(xié)作。程序要能處理文本流,因為這是最通用的接口。

Rob Pike:

1.你無法斷定程序會在什么地方耗費運行時間。瓶頸經(jīng)常出現(xiàn)在想不到的地方,所以別急于胡找個地方改代碼,除非你已證實那兒就是瓶頸所在。

2.估量。在你沒對代碼進行估量,特別是沒找到最耗時的那部分之前,別去優(yōu)化速度。

3.花哨的算法在n很小時通常很慢,而n通常很小?;ㄉ谒惴ǖ某?shù)復(fù)雜度很大。除非你確定n總是很大,否則不要用花哨算法(即使n很大,也優(yōu)先考慮第2條)

4.花哨的算法比簡單算法更容易出bug、更難實現(xiàn)。盡量使用簡單的算法配合簡單的數(shù)據(jù)結(jié)構(gòu)。

5.數(shù)據(jù)壓倒一切。如果已經(jīng)選擇了正確的數(shù)據(jù)結(jié)構(gòu)并具把一切都組織得井井有條,正確的算法也就不言自明。編程的核心是數(shù)據(jù)結(jié)構(gòu),而不是算法。

給我看流程圖而不讓我看(數(shù)據(jù))表,我仍會茫然不解;如果給我看(數(shù)據(jù))表,通常就不需要流程圖了;數(shù)據(jù)表足夠說明問題了。

6.原則6:沒有原則6

Ken Thompson:

模塊原則:使用間潔的接口拼合簡單的部件。

清晰原則:清晰勝于機巧。

拿不準就窮舉。

組合原則:設(shè)計時考慮拼接組合。

分離原則:策略同機制分離,接口同引擎分離。

簡潔原則:設(shè)計要簡潔,復(fù)雜度能低則低。

吝嗇原則:除非確無它法,不要編寫寵大的程序。

透明性原則:設(shè)計要可見,以便審查和調(diào)試。

健壯原則:健壯源于透明與簡潔。

表示原則:把知識疊入數(shù)據(jù)以求邏輯質(zhì)樸與健壯。

通俗原則:接口設(shè)計避免標新立異。

緘默原則:如果一個程序沒什么好說的,就沉默。

補救原則:也現(xiàn)異常時,馬上退也并給出足夠錯誤信息。

經(jīng)濟原則:寧花機器一分鐘,不花程序員一秒鐘。

生成原則:避免手工hack,盡量編寫程序去生成程序。

優(yōu)化原則:雕琢前先要有原型,跑之前先學會走。

多樣原則:決不相信所謂“不二法門”的斷言。

擴展原則:設(shè)計著眼未來,未來部比預(yù)想來得快。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,269評論 25 708
  • 前言 Unix是開源運動歷史上最著名的代表之一,而如今前端是開源運動中最活躍的一支隊伍,我相信它們兩者之間一定有共...
    云峰yf閱讀 3,269評論 0 6
  • 你在你工作的這個城市里居住了多久,你知道它清晨剛剛醒來時的樣子嗎?今天,是否可以約你一起,于這初夏清淺的時光里,靜...
    西堤徒步閱讀 279評論 0 0
  • 謝謝你 對不起 我怕聽到這兩個詞 真的怕了 也許吧 我沒有那種命 想和一個我愛的又愛我的人在一起 有那么難嗎 我在...
    幸福密碼_173f閱讀 255評論 0 0