程序員必看的三本書是什么?
推薦幾本適合每一們程序員枕邊必備書。既然問題提到三本,那就不多不少,只推薦三本,嘻嘻。
1、重構(gòu)軟件開發(fā)大師的不朽經(jīng)典
生動闡述重構(gòu)原理和具體做法
普通程序員進(jìn)階到編程高手必須修煉的秘笈
重構(gòu),一言以蔽之,是在不改變外部行為的前提下,有條不紊地改善代碼。20 多年前,正是《重構(gòu):改善既有代碼的設(shè)計》第1 版的出版,使重構(gòu)終于從編程高手們的小圈子走出,成為眾多普通程序員日常開發(fā)工作中不可或缺的一部分。
如今,Martin Fowler 的《重構(gòu):改善既有代碼的設(shè)計》一書已經(jīng)成為全球有經(jīng)驗的程序員手中的利器,既可用來改善既有代碼的設(shè)計、提升軟件的可維護(hù)性,又可用于使既有代碼更易理解、煥發(fā)出新的活力。 這本備受關(guān)注的第2 版在第1 版的基礎(chǔ)上做了全面修訂,反映了編程領(lǐng)域業(yè)已發(fā)生的許多變化。第2 版中介紹的重構(gòu)列表更加內(nèi)聚,并用JavaScript 語言重寫了代碼范例。此外,第2 版中還新增了與函數(shù)式編程相關(guān)的重構(gòu)范例,旨在教會讀者如何在沒有類的環(huán)境下開展重構(gòu)。 新版沿襲了第1 版的結(jié)構(gòu),依次解釋什么是重構(gòu),為什么要重構(gòu),如何通過“壞味道”識別出需要重構(gòu)的代碼,以及如何在實踐中成功實施重構(gòu)(無論用的是什么編程語言)。
● 理解重構(gòu)的過程和重構(gòu)的基本原則;
● 快速有效地應(yīng)用各種重構(gòu)手法,提升程序的表達(dá)力和可維護(hù)性;
● 識別代碼中能指示出需要重構(gòu)的地方的“壞味道”;
● 深入了解各種重構(gòu)手法,每個手法都包含解釋、動機(jī)、做法和范例4 個部分;
● 構(gòu)建穩(wěn)固的測試,以支持重構(gòu)工作的開展;
● 理解重構(gòu)過程的權(quán)衡取舍以及重構(gòu)存在的挑戰(zhàn)等。
2、代碼整潔之道 [Clean Code A Handbook of Agile Software Craftsmanship]細(xì)節(jié)之中自有天地,整潔成就卓越代碼。
盡管糟糕的代碼也能運(yùn)行,但如果代碼不整潔,會使整個開發(fā)團(tuán)隊泥足深陷,寫得不好的代碼每年都要耗費(fèi)難以計數(shù)的時間和資源。然而這種情況并非無法避免。
軟件專家RoberfC.Marlin在《代碼整潔之道》中為你呈現(xiàn)出了革命性的視野。
Martin攜同ObjectMetltor公司的同事,從他們有關(guān)整潔代碼的敏捷實踐中提煉出軟件技藝的價值觀,以饗讀者,讓你成為更杰出的程序員——只要你著手研讀《代碼整潔之道》。
閱讀《代碼整潔之道》需要你做些什么呢?你將閱讀代碼——大量代碼。《代碼整潔之道》促使你思考代碼中何謂正確,何謂錯誤。更重要的是,《代碼整潔之道》將促使你重新評估自己的專業(yè)價值觀,以及對自己技藝的承諾。 從《代碼整潔之道》中可以學(xué)到:好代碼和糟糕的代碼之間的區(qū)別:如何編寫好代碼,如何將糟糕的代碼轉(zhuǎn)化為好代碼:如何創(chuàng)建好名稱、好函數(shù)、好對象和好類;如何格式化代碼以實現(xiàn)其可讀性的優(yōu)化:如何在不妨礙代碼邏輯的前提下充分實現(xiàn)錯誤處理;如何進(jìn)行單元測試和測試驅(qū)動開發(fā)。
3、編程珠璣(第2版 修訂版)歷史上偉大的計算機(jī)科學(xué)著作之一
融深邃思想、實戰(zhàn)技術(shù)與趣味軼事于一爐的奇書
帶你真正領(lǐng)略計算機(jī)科學(xué)之美
多年以來,當(dāng)程序員們推選出心愛的計算機(jī)圖書時,《編程珠璣》總是位于前列。正如自然界里珍珠出自細(xì)沙對牡蠣的磨礪,計算機(jī)科學(xué)大師JonBentley以其獨(dú)有的洞察力和創(chuàng)造力,從磨礪程序員的實際問題中凝結(jié)出一篇篇不朽的編程“珠璣”,成為世界計算機(jī)界名刊《ACM通訊》歷史上受歡迎的專欄,結(jié)集為兩部不朽的計算機(jī)科學(xué)經(jīng)典名著,影響和激勵著一代又一代程序員和計算機(jī)科學(xué)工作者。本書為首卷,主要討論計算機(jī)科學(xué)中本質(zhì)的問題:如何正確選擇和高效地實現(xiàn)算法。
在書中,作者選取許多具有典型意義的復(fù)雜編程和算法問題,生動描繪了歷史上眾大師們在探索解決方案中發(fā)生的軼事、走過的彎路和不斷精益求精的歷程,引導(dǎo)讀者像真正的程序員和軟件工程師那樣富于創(chuàng)新性地思考,并透徹闡述和總結(jié)了許多獨(dú)特而精妙的設(shè)計原則、思考和解決問題的方法以及實用程序設(shè)計技巧。解決方案的代碼均以C/C++語言編寫,不僅有趣,而且有很大的實戰(zhàn)示范意義。每章后所附習(xí)題極具挑戰(zhàn)性和啟發(fā)性,書末給出了簡潔的解答。