程序员的私藏好书中,一定有这7本!
眾所周知,讀一流的書,是人生最大的捷徑。今天推薦異步社區(qū)的 7 本經(jīng)典程序員必讀書籍!并送出 7 本,贈送方式見文末!
無論是從書中得到提升專業(yè)技能的知識,還是增長見識、啟迪智慧,這些都只有好書才能做到的。
當(dāng)你看書不挑,那就意味著當(dāng)你讀了一本爛書的時(shí)候,也就失去了閱讀一本好書的時(shí)間,爛書除了浪費(fèi)你的時(shí)間,還會混亂你的思維。現(xiàn)如今,市場上的書越來越多,也就意味著你必須越來越會挑!
恰好,推特上一位名為 Pierre de Wulf 的網(wǎng)友突發(fā)奇想,有史以來最受歡迎的編程書籍到底是哪些?為了找到程序員們最為推崇的那些編程書籍,他使用 Python 編寫了腳本,拉取了大量的相關(guān)數(shù)據(jù)。
而今天異步君整理的這份程序員修煉必讀經(jīng)典,就涵蓋了有史以來最受歡迎的編程書籍中的最熱門+必讀的書籍,建議你千萬千萬千萬不能錯(cuò)過!
01
代碼整潔的重要性
代碼整潔之道
作者:?【美】Robert C. Martin
譯者:?韓磊
幾乎所有的程序員都曾在職業(yè)生涯上遇到這個(gè)難題——糟糕的代碼。
在編寫代碼時(shí)沒有考慮規(guī)范和閱讀感,而隨著時(shí)間流逝,在代碼上的特性越加越多,閱讀起來要花費(fèi)不少的時(shí)間。
漸漸地,發(fā)布周期更是開始拉長,缺陷總是不能修復(fù),裝載時(shí)間越來越久,崩潰的次數(shù)越來越多,最終只能放棄原先的代碼,重寫!
而Bob大叔為我們解決了這個(gè)原先難以解決的大難題,《代碼整潔之道》的面世,改變了無數(shù)的程序員編寫代碼的方式、習(xí)慣。
Robert C. Martin,世界級編程大師,設(shè)計(jì)模式和敏捷開發(fā)先驅(qū),敏捷聯(lián)盟首任主席,C++ Report前主編,被后輩程序員尊稱為“Bob大叔”。20世紀(jì)70年代初成為職業(yè)程序員,后創(chuàng)辦Object Mentor公司并任總裁。
在《代碼整潔之道》一書中,作為編程領(lǐng)域佼佼者的Bob大叔給出了一系列行之有效的整潔代碼操作實(shí)踐,這些實(shí)踐在本書中體現(xiàn)為一條條規(guī)則(或稱“啟示”),并輔以來自現(xiàn)實(shí)項(xiàng)目的正、反兩面的范例,書中舉例的項(xiàng)目均來自Bob大叔多年職業(yè)生涯中的個(gè)人經(jīng)歷。
Bob大叔為程序員們提供了詳盡的微距視角,涉及“命名”、“函數(shù)”、“代碼格式”、 “異常處理”、“單元測試”等編碼主題,除了巨細(xì)靡遺地向軟件工匠們極力傳授整潔編碼的藝術(shù),還進(jìn)一步分享了他在探索“軟件之美”旅途中的參證心得。
大家都知道軟件質(zhì)量的好很重要,但它不僅依賴于架構(gòu)及項(xiàng)目管理,更是跟代碼質(zhì)量息息相關(guān)。而代碼質(zhì)量又與其整潔度成正比,換句話說,干凈的代碼,不僅在質(zhì)量上較為可靠,也為后期維護(hù)、升級奠定了良好的基礎(chǔ)。
無論你是敏捷開發(fā)流派還是傳統(tǒng)開發(fā)流派,只要你想保證軟件質(zhì)量,那就不僅要注重架構(gòu)及項(xiàng)目管理,更要留心代碼質(zhì)量。
而現(xiàn)在,你只要遵循《代碼整潔之道》中的規(guī)則,就能編寫出干凈的代碼,從而有效提升代碼質(zhì)量!
02
程序員職業(yè)素養(yǎng)的重要性
代碼整潔之道:程序員的職業(yè)素養(yǎng)
作者:?【美】Robert C. Martin(羅伯特 C. 馬丁)
譯者:?余晟 ,章顯洲
Bob大叔想將過去40余年編程生涯的心得體會悉數(shù)傳授給新一代程序員,以自己以及身邊的同事走過的彎路、犯過的錯(cuò)誤為例,為大家講解想要成為真正專業(yè)的程序員需要具備什么樣的態(tài)度,需要遵循什么樣的原則,需要采取什么樣的行動,意在為后來者引路,助其職業(yè)生涯邁上更高臺階。
于是,《代碼整潔之道:程序員的職業(yè)素養(yǎng)》誕生了。和《代碼整潔之道》不同在于,它不僅是一本技術(shù)類書籍,本書中不僅有相當(dāng)?shù)膬?nèi)容是介紹純技藝的方面,比如測試驅(qū)動開發(fā)等,更有其他有趣且實(shí)用的內(nèi)容——關(guān)于程序員職業(yè)生涯中需要具備的素養(yǎng),這是你在其他書里所看不到的。
例如:什么情況下應(yīng)該對業(yè)務(wù)部門說“是",什么情況下應(yīng)該說“不"。
相信很多人沒有想過這些問題,或者沒有明確的答案,不妨看看Bob大叔是怎么說的:
說“YES”時(shí),你對自己將會做某件事做了清晰的事實(shí)陳述,而且還明確說明了完成期限。那不是指別人, 而是指你自己。你陳述的是自己會去執(zhí)行的一項(xiàng)行動,而且,你不是“可能”去做,或是“可能做到”,而是 “會”做到。而不是在沒有明確目標(biāo)和期限的情況下,就第一時(shí)間草率地給出了確認(rèn)的答復(fù),任務(wù)交付時(shí)卻無法實(shí)現(xiàn)自己的承諾,項(xiàng)目就落得著名的 IBM OS/360 操作系統(tǒng)的失敗下場。
有時(shí)候,獲取正確決策的唯一途徑,便是勇敢無畏地說出“不”字……我們要明白,委屈專業(yè)原則以求全, 并不是問題的解決之道。舍棄這些原則,只會制造出更多的麻煩。在工作中對著那些不合理的工作任務(wù),主動說幾次“NO”,之后你會逐漸發(fā)現(xiàn):你只需要花三分的力氣去拒絕那些無法完成的工作任務(wù),就可以節(jié)省十分甚至二十分開發(fā)的時(shí)間。
在書中,類似的例子還有很多,許多程序員在閱讀這本書時(shí)會發(fā)出惋惜的聲音,認(rèn)為自己如果早一點(diǎn)讀到這本書,之前就不會犯這樣那樣的錯(cuò)誤,就能更早更好地積累自己的職業(yè)素養(yǎng)。
國際著名的軟件過程博物學(xué)家 Matthew Heusser更是對《代碼整潔之道:程序員的職業(yè)素養(yǎng)》給予了高度評價(jià):想要從技術(shù)人員晉升為專業(yè)人士,該經(jīng)歷哪些步驟呢?而這本書將為你悉數(shù)講解,讓你邁上職業(yè)生涯更高的一個(gè)臺階。
03
重構(gòu)的重要性
重構(gòu):改善既有代碼的設(shè)計(jì)(第2版)
作者:?[美]馬丁?福勒(Martin Fowler)
譯者:?熊節(jié) ,林從羽
在編程世界里,有一句古老的工程諺語:“如果它還可以運(yùn)行,就不要?jiǎng)铀!?/p>
而Martin Fowler推翻了這一說法——重構(gòu)(refactoring),在不改變代碼外在行為的前提下,對代碼做出修改,以改進(jìn)程序的內(nèi)部結(jié)構(gòu)。
Martin Fowler,世界級軟件開發(fā)大師,敏捷開發(fā)的開拓者和創(chuàng)始人全球知名的面向?qū)ο蠓治鲈O(shè)計(jì)、UML、模式等專業(yè)領(lǐng)域的領(lǐng)頭羊,首創(chuàng)敏捷開發(fā)方法論,被譽(yù)為軟件開發(fā)“教父”,現(xiàn)任職于全球知名技術(shù)咨詢公司ThoughtWorks,首席科學(xué)家。
重構(gòu)更是被眾人高度稱贊:一本編程技術(shù)類書籍能夠讓讀者在工作或?qū)嵺`多年后,還在反復(fù)咀嚼玩味、愛不釋手、引導(dǎo)著讀者前進(jìn)著,那個(gè)必定是Martin Fowler的《重構(gòu)》系列!
“重構(gòu)”這個(gè)概念最開始來自于 Smalltalk圈子,由于重構(gòu)是框架開發(fā)中不可缺少的一部分,所以當(dāng)框架設(shè)計(jì)者討論自己的工作時(shí),這個(gè)術(shù)語就誕生了。
Martin在《重構(gòu):改善既有代碼的設(shè)計(jì)》中揭示了重構(gòu)的過程,解釋了重構(gòu)的原理和最佳實(shí)踐方式,并給出了何時(shí)以及何地應(yīng)該開始挖掘代碼以求改善。
這本書受到了廣大程序員的喜愛,他們覺得在不改變代碼外在行為的前提下,對代碼做出修改,以改進(jìn)程序的內(nèi)部結(jié)構(gòu)是一個(gè)非常妙的事,而書里提出的重構(gòu)準(zhǔn)則更是幫助他們學(xué)習(xí)如何有條不紊地、一次一小步地修改代碼、改進(jìn)程序結(jié)構(gòu),且不會引入錯(cuò)誤的正確的重構(gòu)方式,最終得到有效的、長期可運(yùn)行的代碼程序。
后來,這本風(fēng)靡國際IT行業(yè)的《重構(gòu)》被引入國內(nèi),在豆瓣評分以9.2的高分長期霸屏程序員必讀書單中。
現(xiàn)在,《重構(gòu):改善既有代碼的設(shè)計(jì)(第2版)》誕生了,Martin在《重構(gòu):改善既有代碼的設(shè)計(jì)》的基礎(chǔ)上做了全面修訂,反映了編程領(lǐng)域業(yè)20年來發(fā)生的許多變化,但Martin傳遞的理念也始終如一:不改變外在行為,而提高代碼質(zhì)量,但第2版將基礎(chǔ)功夫做得更扎實(shí)了,豆瓣評分更是高達(dá)9.5分。
重構(gòu)的關(guān)鍵是理念:通過進(jìn)行最細(xì)微的改變,然后將這些變化串聯(lián)起來。將一個(gè)大變化拆分為許多小變化,又在盡可能多進(jìn)行細(xì)微變化的同時(shí),不改變系統(tǒng)的整體表現(xiàn),然后隨時(shí)間推移,反復(fù)練習(xí)并思考如何進(jìn)行拆分。
Martin在《重構(gòu) 2》一書中通過重構(gòu)框架思考問題的體驗(yàn),嘗試了各種高效的不同重構(gòu)手法后,找出能重構(gòu)手法生成理想序列,繼而進(jìn)行嘗試識別出這種重構(gòu)手法,而同樣的邏輯也適用于更廣泛的層面。Martin采用了70多個(gè)種可行的重構(gòu),并且把每個(gè)重構(gòu)都介紹了一種經(jīng)過驗(yàn)證的代碼變換手法的動機(jī)和技術(shù)。
《重構(gòu) 2》是每個(gè)程序員職業(yè)生涯中不可缺少的一本書,書中的重構(gòu)準(zhǔn)則能幫助大家一步步修改自己的代碼,減少了開發(fā)過程中的風(fēng)險(xiǎn)!
?
04
程序員必看的計(jì)算機(jī)科學(xué)名著
多年以來,當(dāng)讓程序員推選喜愛的計(jì)算機(jī)圖書時(shí),有兩本書總是位于前列,影響和激勵(lì)著一代又一代程序員和計(jì)算機(jī)科學(xué)工作者。
在美國,它們不僅被用作大學(xué)低年級數(shù)據(jù)結(jié)構(gòu)與算法課程的教材,還用作高年級算法課程的輔助教材。連美國著名大學(xué)麻省理工學(xué)院的電氣工程與計(jì)算機(jī)科學(xué)開放式核心課程算法導(dǎo)論都將這兩本書列為不得錯(cuò)過的推薦讀物。
它們就是Jon Bentley的《編程珠璣(第2版)》和《編程珠璣(續(xù))》。
Jon Bentley,世界著名計(jì)算機(jī)科學(xué)家,被譽(yù)為實(shí)踐探索先鋒,影響算法發(fā)展的十位大師之一,也是2004年Dr. Dobb's程序設(shè)計(jì)卓越獎(jiǎng)的獲得者以及暢銷書《編程珠璣》的作者。
這兩本書不但覆蓋了大學(xué)算法課程和數(shù)據(jù)結(jié)構(gòu)課程的大部分內(nèi)容,且書中有許多真實(shí)的歷史案例和許多極好的練習(xí)題以及部分練習(xí)題的提示與解答,非常適合自學(xué)。不強(qiáng)調(diào)單純從數(shù)學(xué)上來進(jìn)行分析的技巧,而是強(qiáng)調(diào)結(jié)合實(shí)際問題來進(jìn)行分析、應(yīng)用和實(shí)現(xiàn)的技巧。
Bentley建議,閱讀這兩本書時(shí)需要備有紙和筆,最好還有一臺計(jì)算機(jī)在手邊,邊讀邊想邊想邊做,這樣才能將閱讀這兩本書的收益最大化。
編程珠璣(第2版)
作者:?【美】Jon Bentley
譯者:?黃倩 ,錢麗艷
《編程珠璣(第2版)》是計(jì)算機(jī)科學(xué)方面的經(jīng)典名著,圍繞程序設(shè)計(jì)人員面對的一系列實(shí)際問題展開。Bentley以其獨(dú)有的洞察力和創(chuàng)造力,引導(dǎo)讀者理解這些問題并學(xué)會解決方法,而這些正是程序員實(shí)際編程生涯中至關(guān)重要的。
Bentley為各個(gè)層次的程序員打造了一份各個(gè)階段都能得到收獲的書籍,更獨(dú)具一格的是通過一些精心設(shè)計(jì)的有趣而又頗具指導(dǎo)意義的程序,對實(shí)用程序設(shè)計(jì)技巧及基本設(shè)計(jì)原則進(jìn)行了透徹而睿智的描述,為復(fù)雜的編程問題提供了清晰而完備的解決思路。
更加值得一提的是,書中解決方案的代碼均以C/C++語言編寫,不僅有趣,而且有很大的實(shí)戰(zhàn)示范意義——每章后所附習(xí)題極具挑戰(zhàn)性和啟發(fā)性,書末給出了簡潔的解答。
編程珠璣(續(xù))
作者:?【美】Jon Bentley
譯者:?錢麗艷?,劉田?,等
《編程珠璣(續(xù))》是《編程珠璣》的姊妹篇,講述了對于程序員有共性的知識,延續(xù)了《編程珠璣》的特色,但《編程珠璣(續(xù))》涉及的范圍更廣,包括文檔、小語言、性能監(jiān)視、圖形輸出等。
Bentley選取許多具有典型意義的復(fù)雜編程和算法問題放入《編程珠璣(續(xù))》,生動描繪了歷史上大師們在探索解決方案中發(fā)生的軼事、走過的彎路和不斷精益求精的歷程。
Bentley將程序員操縱程序的技術(shù)、程序員取舍的技巧、輸入和輸出設(shè)計(jì)以及算法示例等等,這些內(nèi)容結(jié)合成一個(gè)有機(jī)的整體,如一串串珠璣展示給讀者。
引導(dǎo)讀者像真正的程序員和軟件工程師那樣富于創(chuàng)新性地思考,并透徹闡述和總結(jié)了許多獨(dú)特而精妙的設(shè)計(jì)原則、思考和解決問題的方法以及實(shí)用程序設(shè)計(jì)技巧——每章后所附習(xí)題極具挑戰(zhàn)性和啟發(fā)性,書末給出了簡潔的解答。
這兩本書涵蓋了Bentley的美好愿望:希望能讓各個(gè)階段的程序員都從他的書中學(xué)到東西。
05
程序員必備軟技能
對于程序員這個(gè)行業(yè)來說,當(dāng)你開始對未來的發(fā)展感到迷茫感到焦躁、迷茫——職業(yè)焦慮,就意味著,你該好好地為自己做一個(gè)規(guī)范的職業(yè)規(guī)劃了。
“我該如何規(guī)劃自己的職業(yè)生涯?快速的提升能力以及積攢資源,以應(yīng)對一直變化的未來",答案就是軟技能。
近些年來,軟技能被大多數(shù)程序員認(rèn)可,與越來越多的人覺得限制技術(shù)人員職場發(fā)展的因素,往往不是技術(shù)能力,而是技術(shù)之外的軟技能密不可分。
在軟技能的書海里,不得不讀的當(dāng)屬John Sonmez的軟技能系列書籍。里面匯集了那些John在職業(yè)生涯中遇到的所有問題。
約翰·森梅茲(John Sonmez) ,10歲時(shí)起就開始編寫代碼并在Q-Basic中創(chuàng)建了第一款游戲,知名軟件開發(fā)大師,互聯(lián)網(wǎng)上最大的程序員博客“Simple Programmer”網(wǎng)站的創(chuàng)始人,他還為在線培訓(xùn)機(jī)構(gòu)Pluralsight開發(fā)了50多門在線課程。
被眾多軟件開發(fā)人員稱為人生導(dǎo)師,他幫助軟件工程師、程序員和其他專業(yè)技術(shù)人員推動事業(yè)進(jìn)步,通過“化繁為簡”的方法,賦予他們達(dá)成自身目標(biāo)的力量,這也是他所追求的。
在2013年2月14日的時(shí)候,33歲的John正式退休。
但他又沒有完全退休,而是將將所有精力都放在發(fā)展簡單程序員上(使它成為軟件開發(fā)人員在Internet上的最佳選擇)及寫出對所有人有幫助的職業(yè)生涯規(guī)劃書籍(《軟技能》)。
當(dāng)時(shí)的John無法找出答案,因此,現(xiàn)在的他要?jiǎng)?chuàng)造出答案!
軟技能:代碼之外的生存指南
作者:?【美】John Z. Sonmez(約翰 Z. 森梅茲)
譯者:?王小剛
《軟技能:代碼之外的生存指南》一書中,系統(tǒng)地介紹了軟技能的培養(yǎng)方法,幫助很多人走出困惑。他全程從程序員的視角來撰寫,很系統(tǒng)的介紹了程序員必備的軟件能歸納為7大類:職業(yè)、自我營銷、學(xué)習(xí)、生產(chǎn)力、理財(cái)、健身、精神,旨在幫助你成為一個(gè)成功的程序員。
聚焦于軟件開發(fā)人員生活的方方面面且關(guān)注自身全方位發(fā)展的《軟技能:代碼之外的生存指南》,圍繞“人”這一核心,用 360 度環(huán)狀視角描述我們在生活中需要關(guān)注的各種“軟技能”,關(guān)注于“如何讓你的生活更加美好”,在豆瓣評分上獲得8.0分的高分好評。
《軟技能:代碼之外的生存指南》書中除了針對各項(xiàng)重要技術(shù)的“軟技能”,還包括職業(yè)規(guī)劃、提高生產(chǎn)力、個(gè)人投資與理財(cái),乃至健身與戀愛:如何與客戶、同事以及經(jīng)理們打交道,如何保證工作效率,如何保障財(cái)務(wù)安全,如何保持自己的體形,如何找到真愛……這些統(tǒng)統(tǒng)被開發(fā)人員視為畏途的問題一一解答,為開發(fā)人員提供建議。
從既涉及生活習(xí)慣到思維方式,從凸顯技術(shù)中“人”的因素, 全面講解軟件行業(yè)從業(yè)人員所需知道的所有“軟技能”。
幫助軟件工程人員、編程人員和其他技術(shù)人員能夠積極思考自己的職業(yè)生涯,豐富自己的生活,讓自己更接近成功。
軟技能2:軟件開發(fā)者職業(yè)生涯指南
作者:?[美]約翰·森梅茲(John Sonmez)
譯者:?王小剛
本書是《軟技能:代碼之外的生存指南》一書作者的新作,專門就“職業(yè)發(fā)展”的主題做了很多深入而又富有建設(shè)性的探討。是一本為程序員量身定做的職業(yè)發(fā)展指南,處于任何發(fā)展階段的軟件開發(fā)者,都將從本書中獲益。
如果你是軟件開發(fā)/編程的初學(xué)者或者只是對軟件開發(fā)感興趣的人士,可以通過本書了解如何開啟軟件開發(fā)的職業(yè)之旅,如何獲得第一份工作;如果你是中級軟件開發(fā)者,可以通過本書發(fā)現(xiàn)自己的知識短板,學(xué)會如何進(jìn)一步拓展和掌握新的技術(shù)技能,如何學(xué)習(xí)新的編程語言,如何提升技術(shù)水平,如何在自己夢想的編程工作中深耕細(xì)作;如果你是身經(jīng)百戰(zhàn)的專業(yè)軟件開發(fā)者,可以通過本書了解如何拓展和推進(jìn)自己的職業(yè)生涯,如何更好地與同事和老板相處,如何推銷自己的想法,如何做好向上管理,如何升職加薪。?
資深軟件開發(fā)者兼軟件開發(fā)者的人生導(dǎo)師約翰·森梅茲在本書中針對職場上的各項(xiàng)重要的“軟技能”,為軟件開發(fā)者提供專業(yè)的職業(yè)發(fā)展指導(dǎo),讓軟件開發(fā)者的職業(yè)生涯更加精彩和輝煌。?
本書與《軟技能:代碼之外的生存指南》既相得益彰,又各有側(cè)重——《軟技能:代碼之外的生存指南》全方位論述軟件開發(fā)者生活和工作中需要關(guān)注的各種“軟技能”,而本書則從軟件開發(fā)者職業(yè)生涯的時(shí)空關(guān)系出發(fā),描述軟件開發(fā)者職業(yè)發(fā)展整個(gè)歷程中應(yīng)具備的各種“軟技能”。
-END-
贈書福利區(qū)
以上 7 本書中你最想要哪一本,為什么?關(guān)注小詹的視頻號「小詹同學(xué)」,在第一個(gè)視頻中留言分享,24小時(shí)內(nèi)點(diǎn)贊最多的 5 位小伙伴將獲取一本以上書籍(可自由選擇),在公眾號本文下留言相同規(guī)則送 2 本!
點(diǎn)擊下方“閱讀原文”加我微信
↓↓↓
總結(jié)
以上是生活随笔為你收集整理的程序员的私藏好书中,一定有这7本!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神器面世:让你快速在 iOS 设备上安装
- 下一篇: Flutter 1.17 | 2020