青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

XGuru's Blog

技術(shù),是一種態(tài)度。關(guān)注:高性能后端技術(shù)/服務(wù)器架構(gòu)/C++/C/LAMP

   :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  20 Posts :: 0 Stories :: 93 Comments :: 0 Trackbacks

公告





twitter / xoXGuru

feedsky
抓虾
google reader
鲜果
QQ邮箱
九点

常用鏈接

留言簿(12)

搜索

  •  

最新評論

閱讀排行榜

為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它

 原作者 : Alan Skorkin

 翻   譯:Xguru

 


      這讓我想到很多程序員討厭去閱讀代碼,來接受它吧。人人都喜歡編寫代碼--寫代碼是很有樂趣的事。但閱讀代碼卻是一種困難的工作。它不僅僅繁重,而且很無聊,讓我們面對這個事實,任何不是自己寫的代碼都是差勁的(嘿嘿,雖然我們沒有這樣說過,但是其實我們都是這樣想 的)。甚至當你寫完代碼后的僅僅幾個小時之后,你的那些代碼就開始變得越來越爛了,時間一長,你就會把它當作看起來的那種差勁作品。 

      所以,你又何必要去花費時間來審視別人蹩腳的代碼呢,這段時間你完全可以用來 自己去寫一些非常優(yōu)秀的代碼,為什么不這樣嘗試一下,把自己寫好的代碼放上幾個小時再回頭看看,它是否依舊非常優(yōu)秀呢?如果你不站在前輩們的肩膀上,你將沒有可能成一個為技藝精湛的大師。其中一種途徑就是親自找到一個大師,讓他把他所有的知識全部傳授給你--當然這是有可能的,雖然可能性不高,你必須非常走運才能獲到這種機會。然而你可以不用想著去碰運氣, 我們很幸運的處在這樣的一個職業(yè)里--大師們的經(jīng)驗和知識都在那里等著我們?nèi)ノ?,這些都蘊涵在他們所寫 的代碼里。你所要做的事就是去閱讀它,當然它可能會比找一個人坐在你旁邊向你解釋這些多占用一點時間,但是這是實現(xiàn)起來可能性較高,透視全局地思考下,若想成為優(yōu)秀的木匠,你就必需觀察大量的擁有優(yōu)良結(jié)構(gòu)的家具。

      我喜愛閱讀代碼,我的直覺告訴我,你也將會從中受益匪淺,是的,它的確可能是無聊、令人惱火的的事, 但是它所產(chǎn)生回報非常值得你去努力??紤]這個,如果你想成為一個優(yōu)秀的代碼寫手,你是否專門將注意力集中在編寫代碼上?你可能嘗試過,但是你無法單單靠寫代碼走得更遠。這是個普遍公認的事實,大多數(shù)卓越的寫手都是如饑似渴的閱讀者。在你希望去寫些體面點的東西之前,你需要閱讀其他卓越的寫手的作品,吸收不 同的風格,看看在你之前別人有了怎么樣的嘗試。從而培養(yǎng)你自己的創(chuàng)造性。你的知識會慢慢增長,最后你自己寫的東西會顯得成熟,你將慢慢找到編碼的"感覺",編寫代碼也是同樣如此,如果你從來沒有閱讀過其他卓越的代碼, 你又憑什么指望能寫出一些優(yōu)雅的代碼?答案就是別指望這碼事了。對于優(yōu)秀的程序員來說,閱讀卓越的代碼就像作家需要閱讀卓越的書籍一樣重要。

      盡管所有的這些都不容易讓人信服,但是有一個事實是毋庸置疑的--作為一個專業(yè)的開發(fā)者,擅長閱讀代碼能夠?qū)δ愕纳媸种匾?。如今任何正式的項目都是一個團隊的 努力,所以這將有大量的代碼不是你所提交,但是你又不得不要與其工作、修改和擴展它 。因此,閱讀代碼可能將是你所擁有的最常用到并且最有用的技能;你最好盡快咬緊牙關(guān)去掌握它。

 

如何去閱讀代碼,像... 某類代碼閱讀者么?

      我無法告訴你我見過多少次這樣的情形:程序員在陌生的代碼里上下滾動屏幕,幾分鐘以后,臉上就出現(xiàn)了郁悶的表情。然后他們就宣布這代碼就是不具備可讀性的廢物,為何要在這上面浪費時間呢;我們只能用其他的某種方法去解決這個問題。我不確定他們期待什么,靠潛移默化就能理解代碼的意義?或者是就靠聚精會神地盯著這些代碼,就期待能獲得啟迪?你不應(yīng)該只長時間的注視著代碼,你需要理解它并將其為己所用。這里有一些我喜歡使用的技巧,它并不是一個詳盡的清單,但是我發(fā)現(xiàn)這些方法特別有用。


 


1. 試著去編譯和運行它。這通常是一個簡單的處理步驟,比如當你尋找工作性的代碼(與隨意的編碼相反)。然而這也并非總是如此,你能通過將其構(gòu)建和執(zhí) 行的過程中學(xué)習(xí)到代碼里很多高層的結(jié)構(gòu)組織。在工作代碼的主題中,你是否熟悉如何構(gòu)建你當前的項目?項目的構(gòu)建通常是復(fù)雜的,但是能夠通過一點點地了解構(gòu)建過程可執(zhí)行碼是如何產(chǎn)生的,可以讓你獲得很多的體會。

2. 不要只著眼于細枝末節(jié)。第一件事你需要做的,就是在你所讀的代碼結(jié)構(gòu)和風格中找點感覺,開始瀏覽和試著弄明白各個代碼段想要做些什么。這會讓你熟悉整個代碼庫的高層的結(jié)構(gòu),同時也給你正在處理的代碼(無論是良好分解的、或者是意大利面條式【譯注:形容代碼混亂難以梳理】的等等)一些構(gòu)思,這是你找到問題切入點的時候(任何發(fā)生的事,主函數(shù)、小型服務(wù)程序、 控制器等),觀察代碼是如何從這里分支出去的。但是不要花費大量的時間在這個上面,隨著你對代碼有更深入的了解,你可以隨時返回到這個步驟。

3. 確認你了解了它所有的結(jié)構(gòu)。除非碰巧你是在編程語言上的首席專家,否則這里可能有些它讓你不了解的行為。當你從較高層級的俯覽過其代碼時,記錄下你不可能不熟悉的結(jié)構(gòu)。如果記錄的東西非常多的話,你的下一步就很明顯了。如果你對逐句的代碼是如何工作不怎么了解的話,就不要走得太遠。盡管只有幾個結(jié)構(gòu)你不太熟悉,如果你去仔細探究它們的話,可能會為你帶來良好的構(gòu)思。你現(xiàn)在也是正在探索以前你所使用的編程語言中一些不了解的東西,我很樂意為此花費幾個小時去閱讀代碼。

4. 現(xiàn)在你獲取到了大多數(shù)結(jié)構(gòu)的優(yōu)良構(gòu)思,是該任意來幾個的深入實踐的時候了。像步驟2一樣,開始在代碼里漫游,但是這次,從中挑選出任意幾個函數(shù)或者類,開始一行一行地進行分析。這是艱苦工作的開始,但是同時也是 你獲得主要成果的開始。這里的構(gòu)思就形成了你所看的這個代碼庫的觀念模式。也不要在這上面花費太多的時間,但是在繼續(xù)前進之前,試著深刻地吸收一些內(nèi)容豐富的模塊。這是你能夠在了解更多背景下反復(fù)地返回、并每次都能從中得到更多的東西的另外一個步驟。

5. 毋庸置疑的事就是你在前幾個步驟中對某些方面會產(chǎn)生疑惑,所以,這是你最佳的時間去運行和閱讀一些測試了。當你在測試中增加對代碼的了解的同時,將有或多或少潛在的麻煩在潛伏著你。我經(jīng)常會感到驚訝,當閱讀和了解代碼時,開發(fā)者竟然會忽略其中寫得很好很全面的一個測試套件。但是有時候,它沒有提供測試用例。

6. 你說它沒有測試用例么,聽起來像是該寫些東西的最好時機了。這是很有益的事, 這會有助于你自己的理解,改善代碼庫、閱讀的時候同時寫些代碼,這是給你自己找點事干最好的機會。即使它已經(jīng)提供有測試案例了,但是你總是能寫出讓你更受益的東西。測試代碼經(jīng)常需要換個不同的角度去思考,在你將其弄清楚之前,有些概念會躲避著你。

7. 抽取少量稀奇有趣的代碼,將其寫成獨立的程序。我發(fā)現(xiàn)這是在閱讀代碼過程中有趣的練習(xí),即使改變了你的計劃進度。盡管你不了解代碼底層的細節(jié),但是你可能會對代碼在高層的行為有了一些思路。為什么不抽取一些特 殊的函數(shù)將其轉(zhuǎn)變成一個獨立的程序呢?當你讓一小塊代碼獨 立地執(zhí)行時,將更易于調(diào)試,而且這又允許你有了額外的步驟去獲, 去你正在研究的代碼有了得更多見解。

8. 這代碼是骯臟和有壞味的嗎?那么為何不將其重構(gòu)呢。我不是建議你重寫整個代碼庫, 但是即使對一小部分的代碼進行重構(gòu)也能使你的理解上一個層次。開始將你所理解函數(shù)改成獨立的函數(shù)。在你了解之前,原有的規(guī)模巨大的函數(shù)看起來容易做到的, 你能在大腦里修改它。重構(gòu)允許你將代碼變成你自己東西,而無需將其完全重寫。它能為你提 供優(yōu)秀的測試用例,但是即使你沒有這個,僅僅是測試并且只是講你確認了的函數(shù)提取出來。雖然這個測試看起來完全是不足夠的 --作為一個開發(fā)者,學(xué)著相信你自己的技術(shù)。有時候你只好需要這樣去做。

9. 如果看起來很無助的話,那就為自己找個同伴一起閱讀代碼。你可能不是能在讀這份代碼里受益唯一的人,所以去尋找一個其他的人并試著一起閱讀。然而不要去找那些專家,他們會在高的層次向你解釋這一切,你會錯過當你拾起代碼自己去經(jīng)歷時所能得到其中所有微妙的地方。如果不見效的話,你就不要再去強求,有時候最好的辦法就是你去提問,問你的同僚?;蛘吣闶窃谧x開源代碼的話,試著去在互聯(lián)網(wǎng)上尋求他人的幫助。但是請記住,這是最后一步,不是第一步。

       如果時間所迫,你需要適當?shù)丶涌焖俣热チ私庖恍┐a時,只能選上面的一個步驟的話,我會選擇重構(gòu) (第8步)。你不能很快地將其了解清楚,但是如果你做了這個工作的話,你將會牢牢地掌握它。沒關(guān)系,你需要將這句話記在心里:如果你是剛接觸一個重要的代碼庫, 你不可能立刻弄懂它們,甚至不能快速地弄懂它們。這將耗費數(shù)天、數(shù)周或者數(shù)月的不懈的努力--只要去接受它就行了。如果有專家加盟的話你也不能顯著的減少時間 (這是我下個教學(xué)系列的文章 將討論的)。然而無論如何,如果你在讀代碼(還有寫代碼)是有耐心的、有條不紊的,你最后總能變得通曉項目所有的方面,并且當涉及到代碼庫的時候,你會成為能夠勝任他人難以企及工作的人(go-to man)。或者你會選擇成為逃避閱讀代碼、總是找人向你解釋問題的家伙。我知道我會選擇哪一個的。

 

尋找代碼閱讀機會--而不要去逃避它們

 


      

     

       我們喜歡編寫新的代碼,一個誘人原因就是我們能用它恰到好處地處理問題。好吧,可能這次不是,但是下次一定就是了。事實上,你一直在改進你的技藝,但你永遠不可能恰到好處的處理問題。這就是寫新代碼一直存在的價值的原因,你能夠獲得鍛煉并且磨礪你的技巧,其實閱讀和把玩別人所寫代碼也有同樣的(如果沒有更多的話)價值。你不僅僅能從中得到一些有價值的技術(shù)知識,還同樣經(jīng)常能獲得一些領(lǐng)域知識(歸根結(jié)底,代碼是文檔的最終的形式),這仍然是很有價值的東西。

       即使代碼使用奇怪的方式所編寫,不經(jīng)過轉(zhuǎn)換加密的話,都可能是有價值的。你懂我所說的那類代碼,它看起來是加密混淆過了的,但是它并不是有意而為之的(由于某種原因,Perl經(jīng)常就是這種代碼?),無論何時我見到這樣的代碼,我就會想到了這個方法。把這東西想象成是只能經(jīng)過解密破譯后你才能從中有所學(xué)的東西。是的,這是很痛苦的事,但是請你容許它,有時候你也會因為某種神秘瑣碎的原因,寫出這種看起來像被混淆了的代碼(不要否認它,你知道這是真的)。好了,如果你如此這般的投入了時間去閱讀代碼,你更可能最后能夠?qū)懗鲞@種代碼--并不是意味著你一定要將其寫出、而是你將擁有寫出它的能力。最后說一句,態(tài)度決定一切,如果你把閱讀代碼視作乏味無聊的事,它就會變得乏味無聊,你就會去逃避它,但是如果你選擇將其看作一次機遇的話--那么好事就要降臨了。

 

 

 Creative commons license
 by XGuru is licensed under a Creative Commons 署 名-非商業(yè)性使用-相同方式共享 2.5 中國大陸 License. 原文請 看這里

Thanks to bearice for debugging.


 


posted on 2010-06-04 15:55 XGuru 閱讀(6538) 評論(10)  編輯 收藏 引用

Feedback

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-04 16:52 code
我也喜歡看別人的代碼,特別是優(yōu)秀的開源項目  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-04 19:10 chaogu
但是要看什么代碼?看哪里的代碼?怎么去找到優(yōu)秀的代碼呢?這個才是最重要的問題。如果你知道了看代碼的重要性,你會迫不及待地去看別人的代碼,但是你會遇到這么個問題---看誰的或者那個項目的代碼?這點上很多人都會困惑。  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-04 19:16 溪流
說的太好了,把我的丑惡心理全說出來了,哈哈~~  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它[未登錄] 2010-06-04 21:48 Jcily
我覺得不喜歡讀別人代碼的情況更多的是出現(xiàn)在一個團隊里面,而不是面對開源代碼或者商業(yè)代碼。  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-05 10:17 小時候可靚了
我也喜歡看代碼。。。無碼的作品我很有排斥感!  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-05 10:37 XGuru
@小時候可靚了
囧,你可真是個邪惡的人吶  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-05 14:43 小時候可靚了
@XGuru
haha  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-06 06:55 欲三更
閱讀代碼也是一種天賦。。。  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-06 10:08 louity
@欲三更
閱讀代碼不需要天賦,需要心態(tài)  回復(fù)  更多評論
  

# re: [譯文]為何我喜愛讀他人的代碼,而你也應(yīng)該去喜愛它 2010-06-10 17:13 sliu4fun
+1 @小時候可靚了
  回復(fù)  更多評論
  


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老鸭窝毛片一区二区三区| 国产精品高清在线| 欧美成人r级一区二区三区| 亚洲精品日韩在线| 欧美激情偷拍| 性亚洲最疯狂xxxx高清| 亚洲欧洲综合| 另类亚洲自拍| 欧美亚洲一区| 性做久久久久久| 欧美激情1区2区3区| 久久婷婷丁香| 欧美在线关看| 国产在线视频欧美| 亚洲国产一区二区a毛片| 99热精品在线观看| 亚洲综合色激情五月| 欧美一区二区三区另类| 久久久免费观看视频| 欧美国产日韩在线| 亚洲视频欧洲视频| 噜噜噜在线观看免费视频日韩| 欧美精品久久天天躁| 国产欧美一区二区色老头| 亚洲国产精品久久久久秋霞蜜臀| 99视频精品免费观看| 久久精品在线观看| 日韩视频免费观看高清在线视频| 欧美一区不卡| 欧美日韩视频| 亚洲国产精品va在线看黑人| 亚洲欧美国产77777| 免费短视频成人日韩| 国产精品久久久久77777| 午夜精品一区二区三区在线视| 久久一日本道色综合久久| 亚洲高清123| 欧美专区一区二区三区| 欧美视频日韩视频| 最新国产成人av网站网址麻豆| 性伦欧美刺激片在线观看| 亚洲日本成人在线观看| 久久免费国产精品1| 国产日韩在线视频| 亚洲视频在线播放| 亚洲二区免费| 裸体丰满少妇做受久久99精品| 国产午夜精品久久久| 亚洲专区在线视频| 99精品国产福利在线观看免费| 美女日韩欧美| 在线精品视频一区二区| 鲁大师影院一区二区三区| 亚洲综合第一| 国产精品视频久久久| 免费在线日韩av| 久久久青草青青国产亚洲免观| 欧美日韩视频在线一区二区| 亚洲精品久久7777| 欧美国产精品v| 久久午夜激情| 亚洲国产一区二区三区高清| 浪潮色综合久久天堂| 欧美中文字幕不卡| 国产自产在线视频一区| 久久精品视频免费| 久久高清福利视频| 一色屋精品视频在线看| 欧美国产精品专区| 欧美高清免费| 一本久久精品一区二区| 一本大道久久a久久综合婷婷| 欧美日韩天天操| 亚洲一区二区三区涩| 亚洲午夜女主播在线直播| 国产精品久久久久av免费| 性欧美超级视频| 久久精品国产第一区二区三区最新章节 | 欧美日韩免费一区二区三区视频| 日韩手机在线导航| 欧美夫妇交换俱乐部在线观看| 久久久久9999亚洲精品| 精品成人a区在线观看| 美女尤物久久精品| 欧美激情偷拍| 亚洲欧美日韩成人| 久久精品一区中文字幕| 亚洲欧洲精品成人久久奇米网| 亚洲韩日在线| 国产欧美欧洲在线观看| 欧美成人a视频| 欧美视频在线不卡| 久久久久国内| 牛人盗摄一区二区三区视频| 一区二区三区欧美视频| 亚洲欧美中文日韩在线| 最新热久久免费视频| 中文精品99久久国产香蕉| 一区二区三区亚洲| 亚洲视频一区在线观看| 在线国产精品一区| 亚洲一级二级| 亚洲精品中文字幕有码专区| 亚洲自拍16p| 99国产精品久久久久久久成人热 | 在线观看精品| 在线亚洲美日韩| 午夜一区在线| 亚洲综合日韩中文字幕v在线| 极品av少妇一区二区| 亚洲美女av黄| 伊人婷婷欧美激情| 亚洲视频在线观看视频| 在线观看中文字幕亚洲| 亚洲私拍自拍| 一区二区三区精品视频在线观看| 翔田千里一区二区| 一区二区三区日韩精品| 久久中文久久字幕| 久久视频一区二区| 欧美日韩国产不卡在线看| 久久先锋资源| 国产精品亚洲一区| 亚洲精品影视在线观看| 好看的日韩视频| 中文精品视频| 在线综合视频| 欧美激情亚洲激情| 欧美v日韩v国产v| 国产自产在线视频一区| 亚洲欧美在线观看| 性做久久久久久久久| 国产精品成人一区二区三区夜夜夜 | 麻豆精品视频在线观看视频| 亚洲欧美日韩国产中文| 久久国产欧美精品| 欧美在线亚洲| 国产精品一区免费视频| 一区二区三区四区五区精品视频 | 久久久av水蜜桃| 久久激情综合网| 国产精品入口66mio| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲免费视频一区二区| 免费欧美在线视频| 久久国产免费| 欧美一区二区成人| 国产欧美在线播放| 99国产精品视频免费观看| 久久天天狠狠| 亚洲在线免费| 久久精品人人做人人爽| 日韩午夜在线| 亚洲一级二级| 亚洲国产岛国毛片在线| 国产伪娘ts一区| 国产精品亚洲精品| 欧美日韩1区2区3区| 欧美一级二区| 亚洲国产99| 99在线精品视频| 国产精品地址| 欧美色另类天堂2015| 国产精品丝袜xxxxxxx| 国产精品一区二区三区乱码| 欧美一区二区三区视频在线观看 | 久久婷婷麻豆| 久久成人亚洲| 亚洲精品国产拍免费91在线| 亚洲精品一区二区网址| 美女主播精品视频一二三四| 99国产精品自拍| 激情久久综艺| 夜夜嗨一区二区| 久久视频一区二区| 亚洲网站视频| 欧美日韩视频在线一区二区 | 日韩视频免费看| 午夜亚洲性色福利视频| 国产精品扒开腿爽爽爽视频| 亚洲国产欧美另类丝袜| 开心色5月久久精品| 亚洲国产另类久久久精品极度| 一区二区三区精品| 国产偷久久久精品专区| 欧美激情aⅴ一区二区三区| 亚洲免费一区二区| 亚洲国产精品久久91精品| 久久久国产精品亚洲一区 | 欧美激情亚洲自拍| 国产资源精品在线观看| 欧美一区二区三区免费观看视频| 亚洲天堂激情| 在线播放豆国产99亚洲| 国产精品高清网站| 美女网站久久| 欧美中文日韩| 一本色道久久综合亚洲二区三区| 久久蜜桃香蕉精品一区二区三区| 中文欧美在线视频|