全文共4614字,預(yù)計(jì)學(xué)習(xí)時(shí)長(zhǎng)14分鐘
來(lái)源:Pexels
若想成為一名優(yōu)秀的軟件工程師,在努力寫(xiě)代碼的同時(shí),“讀代碼”同樣至關(guān)重要。
在當(dāng)代社會(huì),人們的日常生活因各種各樣的新奇玩意兒而變得豐富多彩,比如播客、視頻以及博客等等。盡管如此,仍然有許多人會(huì)選擇捧讀一本好書(shū)。筆者作為一名資深“書(shū)蟲(chóng)”,也已經(jīng)涉獵過(guò)許多技術(shù)類(lèi)書(shū)籍,例如軟件工程。至今,筆者仍然在試圖通過(guò)閱讀以求新知。
軟件工程領(lǐng)域的發(fā)展日新月異,今天的熱門(mén)可能不久后就淪為明日黃花,因此要在該領(lǐng)域?qū)さ靡槐竞脮?shū),實(shí)為不易。尤其是如果要找一本與某一特定編程語(yǔ)言相關(guān)的書(shū)目,則更為艱難。
然而,在該領(lǐng)域也有一些書(shū)籍歷久彌新,比如那些探討元主題、設(shè)計(jì)模式或者一般思維模式的軟件工程類(lèi)書(shū)籍。
在下文筆者列出的書(shū)單中,就包括目前最熱門(mén)、最暢銷(xiāo)的軟件工程類(lèi)書(shū)籍。下文所推薦的書(shū)目非常經(jīng)典,至今依舊光彩熠熠,并且頗受高級(jí)軟件工程師們的推崇,因此常將其推薦給初級(jí)開(kāi)發(fā)人員。在當(dāng)今這個(gè)時(shí)代,時(shí)間的確很寶貴,尤其是對(duì)軟件工程師而言。但是,如果真的能花上些許時(shí)間拜讀一下這些書(shū)目,則無(wú)論對(duì)于自身的提高還是未來(lái)的職業(yè)生涯而言,必將有所裨益。在這里有必要說(shuō)明一下,下文書(shū)目的排列順序完全隨機(jī),與其重要性的大小無(wú)關(guān),因?yàn)槊勘緯?shū)均有其側(cè)重且值得被推薦。
注意:下文出現(xiàn)的所有鏈接皆非附屬鏈接。
《代碼大全(第二版):軟件構(gòu)建之實(shí)踐指南》(Code Complete: a Practical Handbook of Software Construction, 2ndEdition)出自著名IT暢銷(xiāo)書(shū)作者史蒂夫·邁克康奈爾(SteveMcConnell)之手,完全稱(chēng)得上是“有生之年”系列圖書(shū)之一,因?yàn)閹缀趺恳粋€(gè)程序員都曾拜讀過(guò)此書(shū)。
此書(shū)對(duì)軟件構(gòu)建進(jìn)行了全面分析,邏輯嚴(yán)密,因此在業(yè)界頗受好評(píng)。在本書(shū)中,涉及的話題主要涵蓋軟件設(shè)計(jì)、編碼、調(diào)試以及測(cè)試等。
因此,對(duì)于有著一至三年專(zhuān)業(yè)編程經(jīng)驗(yàn)的工程師而言,這本書(shū)尤其值得閱讀,因?yàn)樗麄儠?huì)受益良多。但是筆者認(rèn)為,即使是軟件編程的初學(xué)者也不妨試讀一下,因?yàn)樗麄兛梢詮倪@本書(shū)中獲得更多的自信,以面對(duì)未來(lái)的軟件編程工作。
指點(diǎn)迷津:軟件開(kāi)發(fā)人員必須要有能力處理復(fù)雜事物,編寫(xiě)易于維護(hù)的代碼,并且手不釋卷——這不僅僅是為了自己,也是為了他人。
無(wú)論參加編程面試是出于個(gè)人興趣還是職業(yè)需求,《程序員面試金典:189道知名科技公司編程面試真題及解答》(Cracking the Coding Interview: 189 Programming Questions &Solution)都是一本非常值得推薦的編程類(lèi)書(shū)籍。本書(shū)作者蓋爾·拉克曼·麥克道爾(GayleLaakmann McDowell)是一位經(jīng)驗(yàn)豐富的軟件工程師,不僅親身參與過(guò)編程面試,而且還曾擔(dān)任過(guò)面試官。在這本書(shū)中,她幫助面試者尋找問(wèn)題背后的細(xì)枝末節(jié),并將問(wèn)題進(jìn)行拆分,從而更好地理解各個(gè)概念。
此外,作者還在書(shū)中講解了189道知名企業(yè)的編程面試真題及答案,為即將參加編程面試的人們助力。
“Bob大叔”羅伯特·馬?。≧obertC. Martin)的著作《代碼整潔之道:整潔代碼的敏捷實(shí)踐方法》(Clean Code: A Handbook of Agile Software Craftsmanship),是全世界最受追捧的編程書(shū)目之一。作者希望通過(guò)此書(shū)來(lái)教授軟件工程師如何編寫(xiě)整潔的代碼。在此書(shū)中,作者通過(guò)許多實(shí)例講解來(lái)告訴人們?nèi)绾沃貥?gòu)現(xiàn)有代碼,從而使其更加易于閱讀與維護(hù)。但值得注意的是,本書(shū)主要針對(duì)的是Java編程語(yǔ)言。雖然本書(shū)所涉及的某些模式與方法也同樣適用于一般編程或其它編程語(yǔ)言,但其主要受眾仍然是Java程序員。
另外同樣值得注意的一點(diǎn)是,由于此書(shū)著于2009年,且受限于現(xiàn)有的工具與IDE,因此書(shū)中某些內(nèi)容已經(jīng)過(guò)時(shí),例如代碼格式部分。但總體來(lái)說(shuō),這本書(shū)仍然值得拜讀。
《重構(gòu)(第二版):改善既有代碼的設(shè)計(jì)》(Refactoring: Improving the Design of Existing Code, 2nd Edition)的作者是世界軟件開(kāi)發(fā)大師馬丁·福勒(Martin Fowler),正如在20前的第一版中一樣,在這第二版中作者也首先向公眾闡述了何為“重構(gòu)”。在此書(shū)中,作者總結(jié)了人們可能會(huì)有的疑問(wèn),并一一予以解答,具體如下:
· 為什么應(yīng)該重構(gòu)代碼?
· 如何辨別哪些代碼需要重構(gòu)?
· 如何成功重構(gòu)代碼?
在閱讀此書(shū)后,人們將能更好地理解重構(gòu)的過(guò)程及其一般原則,并將其快速應(yīng)用于自己的代碼庫(kù)。另外,此書(shū)的讀者可能還會(huì)額外獲贈(zèng)一個(gè)靈敏的“狗鼻子”,當(dāng)自己的隊(duì)友寫(xiě)的代碼亟需重構(gòu)時(shí),這個(gè)鼻子就能立馬聞出來(lái)并提醒對(duì)方。
編程著作《Head First設(shè)計(jì)模式:重視大腦的學(xué)習(xí)指南》(Head First Design Patterns: A Brain-Friendly Guide)由埃里克·弗里曼(Eric Freeman)、伯特·貝茨(Bert Bates)、凱西·塞拉(Kathy Sierra)與伊麗莎白·羅伯森(Elisabeth Robson)合作完成,主要教授人們?cè)O(shè)計(jì)模式與方法,以供其他開(kāi)發(fā)人員用于創(chuàng)建可重復(fù)使用且靈活度高的功能性軟件。在該書(shū)中,有許多高質(zhì)量的可視化圖表,通過(guò)這些圖表,讀者們能夠更加容易地學(xué)習(xí)新概念。
對(duì)于想要了解工廠、單例或者依賴(lài)注入等模式的人而言,這本書(shū)絕對(duì)是不二選擇。由于本書(shū)所使用的案例均由Java寫(xiě)成,因此讀者最好能對(duì)該語(yǔ)言或其它面向?qū)ο蟮木幊陶Z(yǔ)言有所了解。
《企業(yè)應(yīng)用架構(gòu)模式》是馬丁·福勒的又一力作,主要旨在探討企業(yè)應(yīng)用發(fā)展的實(shí)踐。在本書(shū)中,前一部分主要是關(guān)于如何開(kāi)發(fā)企業(yè)應(yīng)用的教程;之后,作者又提供了40多種模式,用以解決在創(chuàng)建企業(yè)應(yīng)用過(guò)程中可能會(huì)遇到的常見(jiàn)問(wèn)題。此外,書(shū)中還包含許多UML圖以及Java代碼或C#代碼示例。
通過(guò)閱讀此書(shū),人們將能夠?qū)ζ髽I(yè)應(yīng)用進(jìn)行分層,獲悉組織業(yè)務(wù)邏輯的主要方法,使用MVC模式來(lái)組織Web應(yīng)用,并且在多事務(wù)運(yùn)行時(shí)處理并發(fā)數(shù)據(jù)。
然而,這本書(shū)正逐漸淘汰于時(shí)代無(wú)情的洪流中,因此許多現(xiàn)代術(shù)語(yǔ)都未及時(shí)更新,例如REST、云端、JSON等。盡管如此,此書(shū)仍然不啻為一本好書(shū),但在真正閱讀時(shí)要注意取其所長(zhǎng),棄其所短。
《修改代碼的藝術(shù)》是世界級(jí)計(jì)算機(jī)專(zhuān)家邁克爾·費(fèi)瑟(Michael Feathers)的經(jīng)典之作,作者在書(shū)中提供了許多策略用于處理未經(jīng)測(cè)試的大型遺留代碼庫(kù)。在這時(shí),或許許多人都會(huì)心生疑惑:已經(jīng)到2020年了,人們一直都有整潔且易于維護(hù)的代碼和微服務(wù),難道處理遺留代碼還算得上什么大問(wèn)題嗎?實(shí)際上,事情絕非如此簡(jiǎn)單。目前對(duì)于大部分公司而言,遺留代碼問(wèn)題仍然是一大挑戰(zhàn)。
通過(guò)閱讀此書(shū),人們將能夠理解修改軟件的一般機(jī)制,例如添加特性、修正缺陷、優(yōu)化性能、改進(jìn)設(shè)計(jì)等。除此之外,讀者也能學(xué)會(huì)如何準(zhǔn)備遺留代碼的測(cè)試,以及如何確定哪些代碼需要修改。
在本書(shū)中,作者還提供了包含Java、C++、C和C#的示例,并詳細(xì)介紹了如何處理非面向?qū)ο蟮倪z留代碼。
(The Clean Coder)《代碼整潔之道:程序員的職業(yè)素養(yǎng)》(The Clean Coder: A Code of Conduct for Professional Programmers)是“Bob大叔”的另一著作,書(shū)中闡述了軟件工藝的技術(shù)、原理、工具和實(shí)踐,并且提供了一些關(guān)于估算、編碼、重構(gòu)與測(cè)試的實(shí)用建議。
在閱讀本書(shū)后,程序員們將能夠更好地處理矛盾,緩解緊迫的日程表,以及應(yīng)對(duì)不近人情的上司。此外,他們也能夠?qū)W會(huì)如何高效管理時(shí)間,長(zhǎng)期應(yīng)對(duì)工作壓力,以及避免身體或精神上的崩潰。最后,讀者也能從這本書(shū)中學(xué)會(huì)如何做到流暢編碼,以及如何在開(kāi)發(fā)人員與團(tuán)隊(duì)之間培養(yǎng)一種合作共贏的良好氛圍。
雖然此書(shū)在業(yè)界聲譽(yù)頗高,但筆者自覺(jué)其并非金科玉律。例如,書(shū)中包含許多未經(jīng)證實(shí)的事件與假定情況,并且常會(huì)由此得出結(jié)論稱(chēng),軟件開(kāi)發(fā)人員最終要為自己的工作全權(quán)負(fù)責(zé)。為此,書(shū)中竟然提出了如下建議:開(kāi)發(fā)人員編寫(xiě)的代碼如果出了問(wèn)題,則由該開(kāi)發(fā)人員對(duì)因此錯(cuò)誤而受損的公司進(jìn)行經(jīng)濟(jì)補(bǔ)償。
因此筆者建議,閱讀此書(shū)時(shí)注意仔細(xì)甄別,披沙揀金。
《算法導(dǎo)論(第三版)》由托馬斯·科爾曼(Thomas H. Cormen)、查爾斯·雷瑟爾森(Charles E.Leiserson)、羅納德·李維斯特(Ronald L. Rivest)與克利福德·斯坦(Clifford Stein)合作編撰而成,被譽(yù)為“計(jì)算機(jī)算法的圣經(jīng)”,可用于指導(dǎo)各種算法?!端惴▽?dǎo)論》一書(shū)所涵蓋的內(nèi)容包羅萬(wàn)象,并且受眾廣泛,無(wú)論是“菜鳥(niǎo)”還是“老司機(jī)”皆可入坑。此外,書(shū)中措辭言簡(jiǎn)意賅,涵蓋主題豐富多樣。然而,此書(shū)內(nèi)容偏復(fù)雜,因此不易消化。
具體來(lái)說(shuō),書(shū)中涉及的主題包括數(shù)據(jù)結(jié)構(gòu)、圖論、計(jì)算幾何學(xué)、快速算法,以及用于處理復(fù)雜任務(wù)的多項(xiàng)式時(shí)間算法等等。雖然書(shū)中還包含一些偽代碼示例,但筆者認(rèn)為,它依舊是一本經(jīng)典的理論著作。
《程序員修煉之道》曾是筆者讀過(guò)的最重要的書(shū)目之一。無(wú)論是在技術(shù)上還是專(zhuān)業(yè)領(lǐng)域,該書(shū)都熱心地建言獻(xiàn)策,最后不僅協(xié)助筆者完成了眾多項(xiàng)目,而且也讓筆者自身得以進(jìn)步與發(fā)展。
即使是在現(xiàn)今2020年,該書(shū)也仍舊與時(shí)俱進(jìn),尤其是最新修訂的“20周年典藏版”。書(shū)中,作者還談?wù)摿酥T多話題以探討一個(gè)當(dāng)代程序員應(yīng)具備哪些素質(zhì),比如個(gè)人責(zé)任感、專(zhuān)業(yè)技能以及職業(yè)發(fā)展。
通過(guò)閱讀此書(shū),人們將能夠獲知持續(xù)學(xué)習(xí)的定義及其重要性,編寫(xiě)靈活、動(dòng)態(tài)、可適應(yīng)的代碼,解決并發(fā)代碼問(wèn)題,防范安全漏洞,以及進(jìn)行有效的測(cè)試等等。
因此,如果必須推薦一本書(shū),那么《程序員修煉之道》必定是筆者的首選。
綜上:在全世界程序員的圈子內(nèi),上述書(shū)單中的作品最受追捧。如若要為讀者從中挑選一本,那么毋庸置疑,一定是安德魯·亨特(Andrew Hunt)執(zhí)筆的《程序員修煉之道》。
聯(lián)系客服