有哪些可以提高代碼質(zhì)量的書(shū)籍推薦?

下面推薦都是我看過(guò)并且我覺(jué)得值得推薦的書(shū)籍。

不過(guò),這些書(shū)籍都比較偏理論,只能幫助你建立一個(gè)寫(xiě)優(yōu)秀代碼的意識(shí)標(biāo)準(zhǔn)。如果你想要編寫(xiě)更高質(zhì)量的代碼、更高質(zhì)量的軟件,還是應(yīng)該多去看優(yōu)秀的源碼,多去學(xué)習(xí)優(yōu)秀的代碼實(shí)踐(比如設(shè)計(jì)模式、設(shè)計(jì)原則)。
代碼整潔之道
《重構(gòu)》[1]

必看書(shū)籍!無(wú)需多言。編程書(shū)籍領(lǐng)域的瑰寶。
世界頂級(jí)、國(guó)寶級(jí)別的 Martin Fowler 的書(shū)籍,可以說(shuō)是軟件開(kāi)發(fā)領(lǐng)域最經(jīng)典的幾本書(shū)之一。目前已經(jīng)出了第二版。
這是一本值得你看很多遍的書(shū)籍。
《Clean Code》[2]

《Clean Code》是 Bob 大叔的一本經(jīng)典著作,強(qiáng)烈建議小伙伴們一定要看看。
Bob 大叔將自己對(duì)整潔代碼的理解濃縮在了這本書(shū)中,真可謂是對(duì)后生的一大饋贈(zèng)。
《代碼大全》[3]

其實(shí),《代碼大全(第 2 版)》這本書(shū)我本身是不太想推薦給大家了。但是,看在它的豆瓣評(píng)分這么高的份上,還是拿出來(lái)說(shuō)說(shuō)吧!
這也是一本非常經(jīng)典的書(shū)籍,第二版對(duì)第一版進(jìn)行了重寫(xiě)。
我簡(jiǎn)單地瀏覽過(guò)全書(shū)的內(nèi)容,感覺(jué)內(nèi)容總體比較虛,對(duì)于大部分程序員的作用其實(shí)不大。如果你想要切實(shí)地提高自己的代碼質(zhì)量,《Clean Code》和 《編寫(xiě)可讀代碼的藝術(shù)》我覺(jué)得都要比《代碼大全》這本書(shū)更好。
不過(guò),最重要的還是要多看優(yōu)秀的源碼,多學(xué)習(xí)優(yōu)秀的代碼實(shí)踐。
《編寫(xiě)可讀代碼的藝術(shù)》[4]

《編寫(xiě)可讀代碼的藝術(shù)》這本書(shū)要表達(dá)的意思和《Clean Code》很像,你看它倆的目錄就可以看出來(lái)了。

在我看來(lái),如果你看過(guò) 《Clean Code》的話,就不需要再看這本書(shū)了。當(dāng)然,如果你有時(shí)間和精力,也可以快速過(guò)一遍。
另外,我這里還要推薦一個(gè)叫做 write-readable-code[5] 的倉(cāng)庫(kù)。這個(gè)倉(cāng)庫(kù)的作者免費(fèi)分享了一系列基于《編寫(xiě)可讀代碼的藝術(shù)》這本書(shū)的視頻。這一系列視頻會(huì)基于 Java 語(yǔ)言來(lái)教你如何優(yōu)化咱們的代碼。
在實(shí)踐中學(xué)習(xí)的效果肯定會(huì)更好!推薦小伙伴們都抓緊學(xué)起來(lái)啊!

《Effective java 》[6]

Java 程序員必看!
又是一本 Java 領(lǐng)域國(guó)寶級(jí)別的書(shū),非常經(jīng)典。這本書(shū)主要介紹了在 Java 編程中很多極具實(shí)用價(jià)值的經(jīng)驗(yàn)規(guī)則,這些經(jīng)驗(yàn)規(guī)則涵蓋了大多數(shù)開(kāi)發(fā)人員每天所面臨的問(wèn)題的解決方案。這篇文章能夠非常實(shí)際地幫助你寫(xiě)出更加清晰、健壯和高效的代碼。本書(shū)中的每條規(guī)則都以簡(jiǎn)短、獨(dú)立的小文章形式出現(xiàn),并通過(guò)例子代碼加以進(jìn)一步說(shuō)明。
程序員職業(yè)素養(yǎng)
《 The Clean Coder》[7]

《 The Clean Coder》是 Bob 大叔的又一經(jīng)典著作。
《Clean Code》和《 The Clean Coder》這兩本書(shū)在國(guó)內(nèi)都翻譯為 《代碼整潔之道》,我覺(jué)得這個(gè)翻譯還是不夠優(yōu)雅的。
另外,兩者的內(nèi)容差異也很大。《Clean Code》這本書(shū)從代碼層面來(lái)講解如何提高自己的代碼質(zhì)量。而《The Clean Coder》這本書(shū)則是從如何成為一名更優(yōu)秀的開(kāi)發(fā)者的角度來(lái)寫(xiě)的,比如這書(shū)會(huì)教你如何在自己的領(lǐng)域更專業(yè)、如何說(shuō)不、如何做時(shí)間管理、如何處理壓力等等。
架構(gòu)整潔之道
《架構(gòu)整潔之道》[8]

你沒(méi)看錯(cuò),《架構(gòu)整潔之道》這本書(shū)又是 Bob 大叔的經(jīng)典之作。
這本書(shū)我強(qiáng)烈安利!認(rèn)真讀完之后,我保證你對(duì)編程本質(zhì)、編程語(yǔ)言的本質(zhì)、軟件設(shè)計(jì)、架構(gòu)設(shè)計(jì)可以有進(jìn)一步的認(rèn)識(shí)。
國(guó)內(nèi)的很多書(shū)籍和專欄都借鑒了《架構(gòu)整潔之道》 這本書(shū)。毫不夸張地說(shuō),《架構(gòu)整潔之道》就是架構(gòu)領(lǐng)域最經(jīng)典的書(shū)籍之一。
正如作者說(shuō)的那樣:
如果深入研究計(jì)算機(jī)編程的本質(zhì),我們就會(huì)發(fā)現(xiàn)這 50 年來(lái),計(jì)算機(jī)編程基本沒(méi)有什么大的變化。編程語(yǔ)言稍微進(jìn)步了一點(diǎn),工具的質(zhì)量大大提升了,但是計(jì)算機(jī)程序的基本構(gòu)造沒(méi)有什么變化。
雖然我們有了新的編程語(yǔ)言、新的編程框架、新的編程范式,但是軟件架構(gòu)的規(guī)則仍然和 1946 年阿蘭·圖靈寫(xiě)下第一行機(jī)器代碼的時(shí)候一樣。
這本書(shū)就是為了把這些永恒不變的軟件架構(gòu)規(guī)則展現(xiàn)出來(lái)。
項(xiàng)目管理
《人月神話》[9]

這本書(shū)主要描述了軟件開(kāi)發(fā)的基本定律:一個(gè)需要 10 天才能干完的活,不可能讓 10 個(gè)人在 1 天干完!
看書(shū)名的第一眼,感覺(jué)不像是技術(shù)類的書(shū)籍。但是,就是這樣一個(gè)看似和編程不沾邊的書(shū)名,卻成了編程領(lǐng)域長(zhǎng)久相傳的經(jīng)典。
這本書(shū)對(duì)于現(xiàn)代軟件尤其是復(fù)雜軟件的開(kāi)發(fā)的規(guī)范化有深刻的意義。
《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):軟件核心復(fù)雜性應(yīng)對(duì)之道》[10]

這本領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)方面的經(jīng)典之作一直被各種推薦,但是我還來(lái)及讀。
軟件質(zhì)量其他書(shū)籍推薦
《代碼的未來(lái)》[11] :這本書(shū)的作者是 Ruby 之父松本行弘,算是一本年代比較久遠(yuǎn)的書(shū)籍(13 年出版),不過(guò),還是非常值得一讀。這本書(shū)的內(nèi)容主要介紹是編程/編程語(yǔ)言的本質(zhì)。我個(gè)人還是比較喜歡松本行弘的文字風(fēng)格,并且,你看他的文章也確實(shí)能夠有所收獲。 《深入淺出設(shè)計(jì)模式》[12] :比較有趣的風(fēng)格,適合設(shè)計(jì)模式入門。 《軟件架構(gòu)設(shè)計(jì):大型網(wǎng)站技術(shù)架構(gòu)與業(yè)務(wù)架構(gòu)融合之道》[13] :內(nèi)容非常全面。適合面試前突擊一些比較重要的理論知識(shí),也適合拿來(lái)擴(kuò)充/完善自己的技術(shù)廣度。 《微服務(wù)架構(gòu)設(shè)計(jì)模式》[14] :這本書(shū)是世界十大軟件架構(gòu)師之一、微服務(wù)架構(gòu)先驅(qū) Chris Richardson 親筆撰寫(xiě),豆瓣評(píng)分 9.6。示例代碼使用 Java 語(yǔ)言和 Spring 框架。幫助你設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和部署基于微服務(wù)的應(yīng)用程序。
最后再推薦兩個(gè)相關(guān)的文檔:
阿里巴巴 Java 開(kāi)發(fā)手冊(cè) :https://github.com/alibaba/p3c Google Java 編程風(fēng)格指南: http://www.hawstein.com/posts/google-java-style.html
參考資料
《重構(gòu)》: https://book.douban.com/subject/30468597/
[2]《Clean Code》: https://book.douban.com/subject/4199741/
[3]《代碼大全》: https://book.douban.com/subject/1477390/
[4]《編寫(xiě)可讀代碼的藝術(shù)》: https://book.douban.com/subject/10797189/
[5]write-readable-code: https://github.com/biezhi/write-readable-code
[6]《Effective java 》: https://book.douban.com/subject/3360807/
[7]《 The Clean Coder》: https://book.douban.com/subject/26919457/
[8]《架構(gòu)整潔之道》: https://book.douban.com/subject/30333919/
[9]《人月神話》: https://book.douban.com/subject/1102259/
[10]《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):軟件核心復(fù)雜性應(yīng)對(duì)之道》: https://book.douban.com/subject/5344973/
[11]《代碼的未來(lái)》: https://book.douban.com/subject/24536403/
[12]《深入淺出設(shè)計(jì)模式》: https://book.douban.com/subject/1488876/
[13]《軟件架構(gòu)設(shè)計(jì):大型網(wǎng)站技術(shù)架構(gòu)與業(yè)務(wù)架構(gòu)融合之道》: https://book.douban.com/subject/30443578/
[14]《微服務(wù)架構(gòu)設(shè)計(jì)模式》: https://book.douban.com/subject/33425123/
程序汪資料鏈接
歡迎添加程序汪個(gè)人微信 itwang007 進(jìn)粉絲群或圍觀朋友圈
