過早優化代碼是萬惡之源

發表于:2013-09-22來源:watch-life作者:watch-life點擊數: 標簽:
過早優化代碼是萬惡之源.讓正確的程序更快比讓快速的程序正確要容易太多,太多。所以,缺省情況下,不要集中在讓代碼更快上,首先把注意力放在使代碼盡可能性的清楚和可讀上。清楚的代碼易于書寫正確,易于理解,易于重構,并且易于優化。復雜化,包括優化,

  Donald Knuth說“過早優化是萬惡之源”(premature optimization is the root of all evil)。這話也許有些夸張,但“過早優化”的危害我覺得不能忽視。

  讓正確的程序更快比讓快速的程序正確要容易太多,太多。所以,缺省情況下,不要集中在讓代碼更快上,首先把注意力放在使代碼盡可能性的清楚和可讀上。清楚的代碼易于書寫正確,易于理解,易于重構,并且易于優化。復雜化,包括優化,總是在稍后引入,并且只是在必須的時候。

  同時,我覺得“過早優化”的概念不專屬編寫程序,生活中的示例也比比皆是。不信,你看看下面這些情形你是否遇到過:

  1、當你開始學一門程序語言的時候(比如c#),你想如果可以精通開發工具(比如Visual Studio)一定如虎添翼,于是一開始你就花很多時間去研究開發工具,而忘記自己學習的重點是語言本身,而非工具?;蛘?,一開始,你花不少的時間去選擇哪門程序語言,比較各種語言的優劣,在五花八門的語言前面猶豫不決,這個想學,那個也不想放棄,結果都是學個半路子。

  2、當你學習一門外語比如英語的時候,一開始,你花了很多的時間去下載有關英語資料,花了很多的時間去找英語書籍,以為有了這些資料和書籍就可以學好英文,而不是一開始就踏踏實實的從單詞、語法開始,結果后來資料下載了一大堆,書籍買了不少,卻沒有堅持下去。

  3、你想搞體育鍛煉,比如打羽毛球,于是一開始你花大量時間去買球衣、球鞋、球拍等裝備,可沒連幾天,你發現自己開始三天打魚了,最后,那些裝備都起了灰,也沒鍛煉幾次。

  4、你想做時間管理(Getting Things Done),于是你研究各種時間管理的資料,上各種時間管理技巧的網站,比如lifehack、 digg 、gtdlife,下載對最流行的GTD的管理軟件,以節省時間的名義浪費時間,很浮躁,不能做到實實在在把每天的計劃都落實,拖拖拉拉。

  5、你有沒有這樣的體驗,一本書你總是對開頭的部分看的最仔細,后面的章節沒堅持看下去,下次又重復這種循環。當你計劃做一件事的時候,總是規劃的非常完美,幾乎考慮每個細節,但卻沒有認認真真、一步一步執行,或者過早完美計劃,反而讓你縮手縮腳,猶豫不前,瞻前顧后,顧此失彼,最后虎頭蛇尾。

  6、比如,如果我有了錢,我就如何如何享受快樂,比如,如果我將來有了很多的時間,我就會花更多的時間陪家人或鍛煉…

  這樣類似的例子還可以舉很多。

  過早優化對大的問題在于:過早關注不重要的部分,而忽略行動和目標本身。以靜態的思維來優化,殊不知,事務發展總是動態的,“優化”是需要長期的實踐積累才可以獲得。出發點是好的,但往往好心辦壞事,折騰大量的時間,做了很多不該做的,而該做的、重要的反而沒做。強化外部條件、工具等外在,而忽略內在因素和行動本身,或者,過多期望將來,而忽略當下眼前。

  活在當下,實實在在做好手頭的事,是避免“過早優化”最好的方法之一。

原文轉自:http://www.watch-life.net/life-thinking/no-premature-optimization.html

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97