強(qiáng)烈推薦10本程序員必讀的書(強(qiáng)烈推薦10本程序員必讀的書籍)
強(qiáng)烈推薦10本程序員必讀的書(強(qiáng)烈推薦10本程序員必讀的書籍)
經(jīng)常有讀者私下問我,能否推薦幾本書,以便空閑的時間讀一讀。于是我跑去自己的書架上篩選了 10 本我最喜歡的書,你可以挑選感興趣的來讀一讀。
01、《代碼整潔之道》
我可以這么肯定地說:《代碼整潔之道》值得所有的程序員讀一讀。軟件的質(zhì)量,不僅依賴于架構(gòu),更與代碼質(zhì)量息息相關(guān)。而代碼的質(zhì)量與其整潔度成正比關(guān)系,越整潔的代碼,其質(zhì)量毫無疑問的就會越高。
如何寫出整潔的代碼呢?Keep It Simple Stupid:代碼簡單直接,不僅能夠提高代碼的效率,還能夠讓閱讀代碼的人賞心悅目。
本書的第一章,對整潔代碼下了一個定義,同學(xué)們都應(yīng)該銘記在心。
1、整潔的代碼力求專注,每個方法、每個類都應(yīng)該全神貫注于一件事;命名更要給人一種“顧名思義”的感覺。
2、整潔的代碼簡單直接,從不隱藏設(shè)計者的意圖。
3、整潔的代碼應(yīng)當(dāng)有單元測試。
4、整潔的代碼拒絕重復(fù),其表達(dá)力直擊人的心靈。
02、《設(shè)計模式之禪》
《設(shè)計模式之禪(第 2 版)》是設(shè)計模式領(lǐng)域公認(rèn)的 3 本經(jīng)典著作之一,也是我們國內(nèi)程序員寫的一本書,趣味化十足,讀起來也非常容易理解。
同學(xué)們都聽說過,學(xué)習(xí)設(shè)計模式非常的重要,那么為什么這么重要呢,設(shè)計模式到底是什么?打個比喻學(xué)編程就像學(xué)武功一樣。
武功要練得很牛逼,有兩樣?xùn)|西不能丟。第一,是內(nèi)功;第二,是武功秘籍。內(nèi)功對應(yīng)到編程就是我們編程基礎(chǔ)能力,那編程的設(shè)計模式就可以想象成武術(shù)中的武功秘籍。
設(shè)計模式就是根據(jù)不同類型場景,設(shè)計優(yōu)雅的(編碼)解決方案。學(xué)好設(shè)計模式有很多好處,比如,容易看懂經(jīng)典代碼中的邏輯(很多優(yōu)秀的開源框架大量使用了設(shè)計模式);應(yīng)對面試時對答如流(設(shè)計模是面試重點);可以編寫出優(yōu)雅的解決方案(或者代碼)。
03、《重構(gòu)——改善既有的代碼設(shè)計》
這本書在業(yè)界的名聲也非常的響,只不過看起來就需要一些精力和耐力,上面這些書看完后,可以看這一本,對于重新審視現(xiàn)有代碼有極大的幫助。
重構(gòu)代碼對提高整體的架構(gòu)能力非常有幫助,因為是站在宏觀的角度去思考的。不然很容易把原有的功能給整出 bug 了。
04、《人月神話》
在軟件領(lǐng)域,很少能有像《人月神話》一樣具有深遠(yuǎn)影響力并且暢銷不衰的著作。
作者為人們管理復(fù)雜項目提供了最具洞察力的見解,既有很多發(fā)人深省的觀點,又有大量軟件工程的實踐。
這本書算得上是飽經(jīng)滄桑了,畢竟年月已久,但書中包含的思想恐怕永遠(yuǎn)不會過時。我讀完后的感覺是,編程的確和生孩子有一定的相似性,追加人手會在一定程度上縮短項目周期,但并不能改變十月孕期的普遍規(guī)律。
05、《編程珠璣》
記得作者在前言中說過一句話:“一次不要讀太多,一章足矣?!?/p>
本書的確在強(qiáng)調(diào)算法,但是除了常規(guī)的算法,作者更多的是在表達(dá)出一種算法以外的思想:高效的算法沒錯,但是正確的事情應(yīng)該用正確的方法來做。 每個算法都有高效的經(jīng)典例子,但是什么時候用什么樣的算法,探究問題的本質(zhì),真正的優(yōu)雅的解決問題,才是本書所要傳達(dá)的精神。
06、《程序是怎么跑起來的》
本書和《計算機(jī)是怎么跑起來的》是一對。這本書的特點就是書的開本比較小,全彩印刷,內(nèi)容相對簡單,整本書很輕。兩本書結(jié)合起來讀會更有趣。
07、《黑客與畫家》
第一次看到這本書的書名時,感覺有點愛上的感覺。對于我們程序員來說,當(dāng)一名“黑客”簡直不要太帥。
這是一本能引發(fā)技術(shù)人思考的佳作,真正意義上的黑客精神、創(chuàng)業(yè)、編程語言,是這本技術(shù)散文集的三個主題。阮一峰的翻譯很到位,很喜歡他的譯文。
08、《圖解 HTTP》
圖解,顧名思義,里面有大量的圖片,可以幫助我們快速的理解 HTTP。對于我們程序員來說,懂得 HTTP 的大致原理,可以無形裝逼。
把一本書寫薄還好讀并且覆蓋主要的知識范圍并不是一件容易的事情。但是這本書做到的,而且從對 HTTP 知識的覆蓋程度到易讀性都做得相當(dāng)好。
09、《軟技能:代碼之外的生存指南》
這本書的作者是真的牛逼,掙了很多錢,完全超乎我的想象。第一次讀的時候,感覺一個程序員原來還可以干這么多事,并且和編碼是不沖突的,大開眼界吧。
這本書中有一個觀點,就是有意識地建立和維護(hù)個人品牌,把自己當(dāng)做一件產(chǎn)品,既要負(fù)責(zé)生產(chǎn),保證品質(zhì),也要負(fù)責(zé)銷售,推向市場。這個觀點對于我來說,還是蠻有影響力的。
10、《算法》
可能很多同學(xué)會存在這樣一個誤區(qū):算法在工作當(dāng)中很少會用到,需要的時候面向搜索引擎解決一下就行了。
但我想說的是,跳槽的時候很有用,因為一些大廠就喜歡考算法。除此之外,算法對閱讀源碼也很有幫助;況且,誰不想做一名編程的藝術(shù)家呢?長期來看,大腦思考能力是一個人最重要的核心競爭力,而算法是為數(shù)不多的能夠有效訓(xùn)練大腦思考能力的途徑之一。
好了,好了,就先推薦這 10 本書吧。
我是一個有著多年工作經(jīng)驗的Java工程師,關(guān)于Java,自己有做材料的整合,一個完整學(xué)習(xí)Java的學(xué)習(xí)路線,學(xué)習(xí)材料和工具。需要的伙伴可以私信我,發(fā)送“編程”等3秒后就可以獲取領(lǐng)取地址,免費(fèi)送給大家。