女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

閱讀優(yōu)秀代碼是提高程序員修為的一種捷徑

工程師人生 ? 來(lái)源:工程師吳畏 ? 2018-11-28 15:29 ? 次閱讀

我突然想起來(lái),很多程序員都討厭閱讀代碼。來(lái)吧,承認(rèn)吧! 每個(gè)人都喜歡編寫代碼,編代碼是件趣事。 另一方面,閱讀代碼也不容易。 不僅不容易(編注:參見《微軟資深軟件工程師:閱讀代碼不容易》),而且還非常枯燥,咱們要面對(duì)這一事實(shí)。任何不是你的代碼都不怎樣。(雖然我們沒(méi)有說(shuō)出來(lái),但我們都是這樣想的。)

即便是你自己幾個(gè)小時(shí)之前寫的代碼,也會(huì)看起來(lái)很爛。時(shí)間越久,看起來(lái)越爛。 所以,為什么你要浪費(fèi)時(shí)間去看其他人的糟糕代碼,而你完全可以利用這段時(shí)間編寫你自己的優(yōu)秀代碼。 其實(shí)我們可以一試,幾個(gè)小時(shí)之后回頭再看,看看你的代碼是否還依舊優(yōu)秀。 如果你不能吸收前輩大師的經(jīng)驗(yàn)知識(shí),那你永遠(yuǎn)都無(wú)法成為一位大師。

成為大師的方法之一是,找到一位大師,讓其傾囊傳授其所知。 有這種可能么?當(dāng)然了,有這可能,雖然機(jī)會(huì)不大,但你必須極其走運(yùn)。 不過(guò)你不必十分走運(yùn),因?yàn)槲覀冃疫\(yùn)地處于這樣一個(gè)職業(yè),一個(gè)充滿著大師知識(shí)和技能的職業(yè),等待我們?nèi)ゼ橙∥眨@些東西就在他們所編寫的代碼中。 你要做的就是去閱讀代碼,當(dāng)然了,這或許耗時(shí)不少,畢竟沒(méi)有人坐在那里給你講解,但這種方法的成效還很高。 打個(gè)比方,要想成為一名卓越的木匠,得觀察大量結(jié)構(gòu)優(yōu)良的家具。

我喜愛(ài)閱讀代碼,我的直覺(jué)告訴我,你也會(huì)從中獲益頗豐。雖然閱讀過(guò)程惱人并煩人,但其回報(bào)是非常值得你為之努力的。 說(shuō)到這個(gè),如果你想成為一名卓越的作家,你會(huì)專注于寫作么? 你或許已經(jīng)嘗試,但你并沒(méi)有走得很遠(yuǎn)。 大多數(shù)的偉大作家也是如饑似渴的讀者,這是一個(gè)普遍事實(shí)。 在你能寫出任何拿得出手的東西之前,你需要品讀其他偉大作家,吸收不同的風(fēng)格,看看前輩已嘗試過(guò)的東西,從中吸取精華。 你的知識(shí)會(huì)慢慢增長(zhǎng),你自己的作品最終會(huì)透露出些許成熟,你也會(huì)找到一種“感覺(jué)”。 編寫代碼和寫作沒(méi)什么不同,如果你都沒(méi)有閱讀過(guò)任何卓越的代碼,你為什么期望自己能寫出像樣的代碼呢? 你顯然不應(yīng)該那樣。對(duì)于程序員來(lái)說(shuō),閱讀卓越代碼就如同作家閱讀優(yōu)秀書籍一樣重要(這話可不是我說(shuō)的,這是Peter Norvig(Google研究院總監(jiān))說(shuō)的,他非常優(yōu)秀,大家也要向他學(xué)習(xí)了)。

即便所有這些都無(wú)法讓你信服,那這里有一個(gè)不可置否的事實(shí)。 對(duì)你作為一名專業(yè)開發(fā)人員的生存來(lái)說(shuō),善于閱讀代碼至關(guān)重要。 如今,任何有一定規(guī)模的項(xiàng)目,都是團(tuán)隊(duì)的成果。所以,你通常要處理、修改和擴(kuò)展大量不是你寫的代碼。 因此,閱讀代碼可能是你能掌握的最常用并最有用的技能。挺過(guò)這個(gè)難關(guān),好好掌握。

如何閱讀代碼?像某些人一樣……

我已經(jīng)記不清有多少次看到程序員(用鼠標(biāo))滾上滾下地看著不熟悉的代碼,幾分鐘過(guò)后,他們的臉上浮現(xiàn)出不悅的表情。 他們不久后會(huì)宣告說(shuō),那代碼不值一讀,為什么要浪費(fèi)時(shí)間呢?我們只能用其他方法解決問(wèn)題。 我不確定(他們)在期待什么,是通過(guò)潛移默化來(lái)吸收代碼的含義,還是集中精神盯著代碼來(lái)得到啟發(fā)? 你不能只靠長(zhǎng)時(shí)間盯著代碼來(lái)閱讀代碼,你要理解它并化為己用。 這里有一些我喜歡用的技巧,雖然這不是一份詳盡的列表,但我發(fā)現(xiàn)其中有些特別有用。

1.盡力構(gòu)建并運(yùn)行代碼。 這通常是一個(gè)簡(jiǎn)單的步驟,就像你在看可運(yùn)行的代碼(這和隨機(jī)代碼相反)。 不過(guò),并非總是如此。通過(guò)構(gòu)建和執(zhí)行代碼,你能從中學(xué)到很多上層代碼結(jié)構(gòu)。 說(shuō)到工作代碼,你是否非常熟悉如何構(gòu)建你的當(dāng)前項(xiàng)目? 雖然構(gòu)建通常非常復(fù)雜,但通過(guò)構(gòu)建并生成可執(zhí)行的代碼,你能學(xué)到很多。

2. 不要只注重細(xì)節(jié)。 你要做的第一件事是,在你正閱讀的代碼中,找到代碼結(jié)構(gòu)和風(fēng)格的。 首先瀏覽一下代碼,盡力理解不同代碼段要做什么。這會(huì)讓你熟整個(gè)代碼的上層結(jié)構(gòu),你也能領(lǐng)會(huì)到你正處理的代碼的一些構(gòu)思(良好架構(gòu)和意大利面條等)。 這時(shí)候,你可以找到切入點(diǎn)(不管它是什么,主函數(shù)、servlet或控制器等),并查看代碼如何在那里分支。 不要在這上面花過(guò)多的時(shí)間,隨著你愈加熟悉代碼,你可以隨時(shí)回來(lái)查看。

3. 確信自己理解所有結(jié)構(gòu)。 除非你碰巧是所用編程語(yǔ)言的首席專家,否則該語(yǔ)言有些它能做的事你可能還不知道。當(dāng)你在瀏覽代碼時(shí),記下所有你或許不熟悉的結(jié)構(gòu)。 如果有很多不熟悉的結(jié)構(gòu),你要做的下一步非常明顯。 如果你不知道代碼要做什么,那你就走不了很遠(yuǎn)。 即便只有幾個(gè)你不熟悉的結(jié)構(gòu),你應(yīng)當(dāng)深入查看。 你現(xiàn)在是在探索你所用編程語(yǔ)言中你以前不知道的東西,為此花幾個(gè)小時(shí)來(lái)閱讀代碼,我也非常樂(lè)意。

4. 既然你對(duì)大多數(shù)結(jié)構(gòu)已有很好了解,那現(xiàn)在是該做些隨機(jī)深入研究了。 就像步驟2,開始瀏覽代碼,當(dāng)這次要挑選一些隨機(jī)函數(shù)或類,并開始逐行詳細(xì)查看。 這是硬仗開始的地方,但也是你要取得主要成功的地方。 這里的構(gòu)想,會(huì)形成你正在查看的代碼庫(kù)的思維模式。 也不要在這上面花過(guò)長(zhǎng)的時(shí)間,但在繼續(xù)前行之前,你要盡力并極大吸收一些有內(nèi)容的代碼塊。 這個(gè)步驟,你也可以隨時(shí)反復(fù)回過(guò)頭來(lái),每次你都會(huì)了解更多的背景,并收獲更多。

5. 毫無(wú)疑問(wèn),在前面這些步驟中,肯定有你困惑的地方,所以這是你做些測(cè)試的最佳時(shí)間。在測(cè)試的時(shí)候,你的麻煩可能會(huì)更少,同時(shí)你也能理解代碼。 我一直感到奇怪,開發(fā)人員忽略一套寫得很好很全面的測(cè)試代碼,而盡力去閱讀并理解某些代碼。 當(dāng)然了,有時(shí)候并沒(méi)有測(cè)試。

6. 如果你說(shuō)沒(méi)有測(cè)試,那這聽起來(lái)是編寫測(cè)試的時(shí)候了。 (編寫測(cè)試)有很多益處,有助于你自己的理解,有助于你提升代碼庫(kù),閱讀代碼時(shí)也能編寫代碼,這是該你出手做些事的時(shí)候。 即便已經(jīng)有了測(cè)試,通常你也可以編寫一些測(cè)試,你總能受益的。 測(cè)試代碼通常需要換種方式思考問(wèn)題,那些你以前不太明了的概念也會(huì)變得更清晰。

7. 提取奇特的代碼,使其成為單獨(dú)的程序。我發(fā)現(xiàn)閱讀代碼是個(gè)非常有趣的練習(xí),即便只為節(jié)奏變化。 即便你不了解代碼的底層細(xì)節(jié),你或許能知道一些代碼在上層結(jié)構(gòu)上要做什么。 什么不提取一些特定的函數(shù),單獨(dú)列為獨(dú)立的程序。 當(dāng)你在執(zhí)行小段程序時(shí),調(diào)試也會(huì)更簡(jiǎn)單。反過(guò)來(lái)說(shuō),可能還需要一些額外的步驟,才能理解你正查看的代碼。

8. 代碼不干凈?有異味? 為什么不重構(gòu)它? 我并不建議你重寫整個(gè)代碼庫(kù),但重構(gòu)部分代碼,真的有助于你理解層次上升一層。 把你理解的函數(shù)拿出來(lái),改成獨(dú)立的函數(shù)。 在你知道之前,原來(lái)的大函數(shù)看起來(lái)易管理,你可以在腦海中修改它。 重構(gòu)允許你把代碼變成自己的,無(wú)需完成重寫代碼。 如果有好的測(cè)試,有助于重構(gòu),但即便你沒(méi)有好的測(cè)試,抽取你確定的函數(shù)并做測(cè)試。 即便測(cè)試看起來(lái)完全不充分,但作為一個(gè)開發(fā)人員,你得學(xué)著相信你的技能,有時(shí)候你只需努力去做(重構(gòu))。(如果你必須重構(gòu),你通常都可以把代碼恢復(fù)原狀。)

9. 如果沒(méi)什么能幫上忙,那你就找個(gè)閱讀代碼的同伴。或許并非只有你一個(gè)人能從這代碼中獲益,所以去找一個(gè)人,一起閱讀代碼吧。 但你別找專家,他們會(huì)從上層結(jié)構(gòu)上,向你解釋所有東西,你會(huì)錯(cuò)失那些你自己詳細(xì)查看代碼時(shí)所能學(xué)到的細(xì)微差別。 然而,如果不見效的話,你也不能理解,有時(shí)候,你能做的最好的事就是去問(wèn)。 向你的同事請(qǐng)教,如果你正在閱讀開源代碼,可以在互聯(lián)網(wǎng)上找人問(wèn)問(wèn)。 但是你要記住,這是最后一步,而不是第一步。

如果我時(shí)間緊迫,需要快速合理地理解某些代碼,并且我只能挑選上述步驟的其中一個(gè),那我會(huì)選擇“重構(gòu)”(即:第8個(gè)步驟)。 雖然你能理解的東西不會(huì)很多,但那些你領(lǐng)會(huì)的東西,你會(huì)牢牢記住的。 總之,有件事你需要記在心里。 如果你新接觸一個(gè)重要的代碼庫(kù),你不可能立即能理解它。 這需要數(shù)天、數(shù)周和數(shù)月的潛心努力,接受這個(gè)事實(shí)。 即便有一位專家和你在一起,也不能明顯地縮短時(shí)間(。 然而,當(dāng)涉及到代碼庫(kù)時(shí),如果你能耐心并有條不紊地閱讀(和編寫)代碼,你最終能熟悉項(xiàng)目的方方面面,你能成為大牛。 你或者是逃避閱讀代碼,經(jīng)常尋求某人幫你講解某事。 我知道我會(huì)成為哪一種人。

尋找閱讀代碼的機(jī)遇 – 不要錯(cuò)失

我們喜歡編寫新代碼,是因?yàn)槲覀冞@次能正確處理問(wèn)題。 好吧,也許不是這次,但一定是下次。 事實(shí)上是,你經(jīng)常改進(jìn)你的技術(shù),但你從沒(méi)有恰當(dāng)?shù)靥幚韱?wèn)題。 這就是編寫新代碼的價(jià)值所在,你可以歷練并磨練你的技能,但閱讀和把玩其他人編寫的代碼,(如果沒(méi)有更多的價(jià)值,)也是有同樣多的價(jià)值。 你不僅能從中獲得一些有價(jià)值的技術(shù)知識(shí),也能收獲領(lǐng)域知識(shí),領(lǐng)域知識(shí)通常仍具更多價(jià)值(畢竟,代碼是文檔的最終形式)。

即便代碼寫得很神秘,無(wú)任何慣例可言,但還是有價(jià)值。 你知道我在說(shuō)的代碼,它幾乎看起來(lái)晦澀難懂,但不是有意而為之(因某些原因,Perl語(yǔ)言代碼通常是這樣的)。 不管什么時(shí)候我看到那樣的代碼,我都會(huì)這樣想: 把它想象成只有你破譯它后才能學(xué)到的東西。 是的,這是主要的痛楚之處,但要接受它,有時(shí)候你自己也會(huì)因瑣碎的原因而寫出那種使人困惑的代碼(否認(rèn)沒(méi)有用,你知道這是真的)。 好了,如果你花些時(shí)間來(lái)閱讀那樣的代碼,你更有可能最終寫出同樣的代碼。并不說(shuō)你將會(huì)寫出那樣的代碼,但你有能力寫出那樣的代碼。 最后,態(tài)度通常是最重要的(編注:態(tài)度決定一切)。 如果你視閱讀代碼為日常繁瑣的工作,那它就是(繁瑣的工作),并且你會(huì)逃避,但如果你視其為一個(gè)機(jī)遇,那好事終將到來(lái)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    954

    瀏覽量

    30271
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    零基礎(chǔ)入門:如何在樹莓派上編寫和運(yùn)行Python程序

    一種非常有用的編程語(yǔ)言,其語(yǔ)法易于閱讀,允許程序員使用比匯編、C或Java等語(yǔ)言更少的代碼行。Python編程語(yǔ)言最初實(shí)際上是作為L(zhǎng)inux的腳本語(yǔ)言而開發(fā)的。Py
    的頭像 發(fā)表于 03-25 09:27 ?508次閱讀
    零基礎(chǔ)入門:如何在樹莓派上編寫和運(yùn)行Python<b class='flag-5'>程序</b>?

    代碼與傳統(tǒng)開發(fā)的區(qū)別 低代碼與無(wú)代碼開發(fā)的區(qū)別

    在軟件開發(fā)領(lǐng)域,傳統(tǒng)開發(fā)、低代碼開發(fā)以及無(wú)代碼開發(fā)是三不同的開發(fā)方式,每種方式都有其獨(dú)特的優(yōu)勢(shì)和適用場(chǎng)景。 、低代碼開發(fā)與傳統(tǒng)開發(fā)的區(qū)別
    的頭像 發(fā)表于 01-31 10:48 ?522次閱讀

    阿里云升級(jí)通義靈碼AI程序員,全面上線

    近日,阿里云宣布其備受矚目的通義靈碼AI程序員已正式全面上線,開發(fā)者帶來(lái)更為強(qiáng)大和便捷的編程輔助工具。 此次上線的通義靈碼AI程序員,在功能上實(shí)現(xiàn)了全面升級(jí)。現(xiàn)在,它支持VS Code
    的頭像 發(fā)表于 01-09 11:16 ?628次閱讀

    TMS320C6000程序員指南

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000程序員指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-24 17:19 ?0次下載
    TMS320C6000<b class='flag-5'>程序員</b>指南

    TMS320C55x DSP CPU程序員參考補(bǔ)充

    電子發(fā)燒友網(wǎng)站提供《TMS320C55x DSP CPU程序員參考補(bǔ)充.pdf》資料免費(fèi)下載
    發(fā)表于 12-21 11:36 ?3次下載
    TMS320C55x DSP CPU<b class='flag-5'>程序員</b>參考補(bǔ)充

    UCD3138A64/UCD3138128程序員手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《UCD3138A64/UCD3138128程序員手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 12-09 14:42 ?0次下載
    UCD3138A64/UCD3138128<b class='flag-5'>程序員</b>手冊(cè)

    機(jī)械革命發(fā)布CODE AI程序員

    近日,英特爾新質(zhì)生產(chǎn)力技術(shù)生態(tài)大會(huì)在成都舉行,機(jī)械革命作為重要參展商帶來(lái)了多款明星產(chǎn)品引爆全場(chǎng)!其中更是在AI PC軟件生態(tài)產(chǎn)品發(fā)布分論壇上,Intel、智譜、機(jī)械革命三方聯(lián)合發(fā)布了專為程序員設(shè)計(jì)的CODE AI程序員本,成為本次大會(huì)的
    的頭像 發(fā)表于 11-30 10:34 ?974次閱讀

    Linux驅(qū)動(dòng)程序程序員指南

    電子發(fā)燒友網(wǎng)站提供《Linux驅(qū)動(dòng)程序程序員指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-22 15:53 ?0次下載
    Linux驅(qū)動(dòng)<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南

    AI編程工具會(huì)不會(huì)搶程序員飯碗

    AI編程工具可輔助編程,減少手動(dòng)編碼,提升效率,對(duì)程序員有積極影響也有挑戰(zhàn)。程序員需深化技能、拓寬知識(shí)應(yīng)對(duì)。長(zhǎng)遠(yuǎn)看,AI與人類程序員將共生共榮。
    的頭像 發(fā)表于 11-08 10:17 ?479次閱讀

    第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)開幕

    據(jù)官方媒體報(bào)道,10月24日;? 第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)在湖南湘江新區(qū)開幕;本次中國(guó)1024程序員節(jié)以“智能應(yīng)用新生態(tài)”為主題。設(shè)置有岳麓對(duì)話、技術(shù)英雄會(huì)、主題峰會(huì)及賽事、展覽等活動(dòng),
    的頭像 發(fā)表于 10-25 15:42 ?437次閱讀

    【《大語(yǔ)言模型應(yīng)用指南》閱讀體驗(yàn)】+ 基礎(chǔ)篇

    的內(nèi)容,閱讀雖慢,但在這學(xué)習(xí)過(guò)程中也掌握了許多新知識(shí),后續(xù)章節(jié)的閱讀打下基礎(chǔ),這是個(gè)快樂(lè)的學(xué)習(xí)過(guò)程。 基礎(chǔ)篇從人工智能的起源講起,提出
    發(fā)表于 07-25 14:33

    京東上萬(wàn)程序員都AI用它!

    對(duì)大模型生成代碼進(jìn)行智能修復(fù),程序員開啟代碼漏洞修復(fù)的“自動(dòng)駕駛”模式,不但減少人工接入、提高工作效率,更為企業(yè)抵御內(nèi)外部各種攻擊構(gòu)建起
    的頭像 發(fā)表于 07-17 16:29 ?441次閱讀
    京東上萬(wàn)<b class='flag-5'>程序員</b>都AI用它!

    程序員節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

    10月24日,程序員專屬的節(jié)日里,我們盛大開啟“程序員節(jié)視頻創(chuàng)意大賽”特別活動(dòng)!這不僅是場(chǎng)視覺(jué)的盛宴,更是智慧與創(chuàng)意的璀璨碰撞。我們誠(chéng)摯邀請(qǐng)每
    的頭像 發(fā)表于 07-08 10:38 ?72次閱讀
    <b class='flag-5'>程序員</b>節(jié)視頻創(chuàng)意大賽,用串口屏贏取千元大獎(jiǎng)

    程序員節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

    10月24日,程序員專屬的節(jié)日里,我們盛大開啟“程序員節(jié)視頻創(chuàng)意大賽”特別活動(dòng)!這不僅是場(chǎng)視覺(jué)的盛宴,更是智慧與創(chuàng)意的璀璨碰撞。我們誠(chéng)摯邀請(qǐng)每
    的頭像 發(fā)表于 07-04 09:00 ?67次閱讀
    <b class='flag-5'>程序員</b>節(jié)視頻創(chuàng)意盛宴,邀您共襄盛舉!

    助力程序員告別困擾已久的夢(mèng)魘-Bug

    程序員的噩夢(mèng)是什么?不用懷疑,就是讓你加班到崩潰的Bug!下面是經(jīng)過(guò)業(yè)界大佬們“長(zhǎng)期加班”積累的小妙招,助力你離早下班又進(jìn)步~、定位Bug范圍及性質(zhì)要有效解決問(wèn)題,首先要縮小范圍,集中關(guān)注最近
    的頭像 發(fā)表于 07-02 08:10 ?645次閱讀
    助力<b class='flag-5'>程序員</b>告別困擾已久的夢(mèng)魘-Bug