日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
有哪些可以提升編程技能的好書值得推薦?

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。

提高編程技術(shù)離不開大量的練習(xí),這是在專業(yè)上有所提高的唯一途徑。但在此之前,我們最好先掌握理論知識(shí),再將其應(yīng)用于實(shí)踐,這樣你的理解會(huì)更加深刻。

在軟件開發(fā)行業(yè)中,人們常常通過(guò)閱讀文章、書籍、參加會(huì)議、嘗試新的庫(kù)、模式和范例不斷提升自我。筆者為了提高編程技能閱讀了頗多書籍,本文為你精選了一份書單,能夠幫助你編寫簡(jiǎn)練代碼,并在職業(yè)生涯中達(dá)到新的高度。

羅伯特·塞奇威克的《算法》

這本書講解了基本的算法,如搜索、排序和繪圖等。計(jì)算機(jī)科學(xué)的所有學(xué)生都要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法,這是該領(lǐng)域最基礎(chǔ)的部分。

本書中會(huì)解釋搜索功能的實(shí)現(xiàn)和各種排序算法之間的差異。其中有一節(jié)是關(guān)于圖論的,讀完之后,你將清楚如何遍歷樹并找到最短的路徑。認(rèn)識(shí)這些算法并應(yīng)用它們,會(huì)對(duì)你下次的求職面試大有益處。一位有經(jīng)驗(yàn)的軟件工程師需要有能力在特定的情況下使用合適的算法,并預(yù)知其性能。

如果你不喜歡讀文字而更喜歡聽(tīng)課,Coursera 上有一門由該書作者提供的免費(fèi)課程值得一看。(https://www.coursera.org/learn/algorithms-part1)

史蒂夫·麥康奈爾的《代碼大全》

合上這本書時(shí),筆者驚訝于自己從未聽(tīng)人解釋過(guò)其中一些至關(guān)重要的基本概念。下面舉幾個(gè)例子。

例如,只在需要使用變量的地方聲明和初始化變量;不需要聲明變量時(shí),只需要在代碼中賦值。變量應(yīng)該具有最低可見(jiàn)范圍,這樣做的好處是代碼的可讀性會(huì)得到很大的提高,隊(duì)友將對(duì)此感激不盡。

另一個(gè)例子是如何有效地使用if 條件。它們用起來(lái)很簡(jiǎn)單,但能顯著降低代碼的可讀性。

 
 
 
 
  1. if (paymentComplete) {
  2.                     if (errorCode != 0) {
  3.                        ...
  4.                     } elseif(errorCode ==422) {
  5.                        ...
  6.                     } else {
  7.                       if (showError) {
  8.                         ...
  9.                       } else {
  10.                         ...
  11.                       }
  12.                     }
  13.                   } else {
  14.                      ...
  15.                   }

示例中嵌套了太多的if條件,難以遵循和測(cè)試其邏輯。在學(xué)習(xí)編程時(shí),人們總是關(guān)注if 條件如何工作以及何時(shí)使用,但沒(méi)有人告知我們它被濫用的情況。本書對(duì)此給出了一些建議:避免太多嵌套塊,考慮將代碼分解為函數(shù),并檢查 switch..case 語(yǔ)句是否合適(編程語(yǔ)言是否支持)。

尼爾·福特的《功能的思考》

據(jù)維基百科,第一種函數(shù)式編程語(yǔ)言是在20世紀(jì)50年代后期開發(fā)出來(lái)的。從那時(shí)起,函數(shù)式編程的范例逐漸普及起來(lái)。這意味著數(shù)據(jù)開始通過(guò)函數(shù)進(jìn)行轉(zhuǎn)換,可以組成多層級(jí)數(shù)據(jù)。

不過(guò),對(duì)初級(jí)開發(fā)人員而言,構(gòu)建無(wú)狀態(tài)序列很難。即使是對(duì)于經(jīng)驗(yàn)豐富但從未使用過(guò)函數(shù)式編程的開發(fā)人員來(lái)說(shuō),編寫高效且可維護(hù)的函數(shù)代碼也是一個(gè)挑戰(zhàn)。下面是科特林中對(duì)偶數(shù)的平方求和的例子:

 
 
 
 
  1. val input = listOf(1, 2, 3, 4, 5, 6)
  2. val result = input.filter { it % 2 == 0 }
  3.                   .map { it * it }
  4.                   .sum()

我們可以通過(guò)一般的聲明式的方法完成,但這需要編寫一些循環(huán)并保存其中間狀態(tài)。以功能性的方式編寫代碼更簡(jiǎn)單清晰并愈發(fā)無(wú)狀態(tài)。除此之外,認(rèn)識(shí)到函數(shù)的順序在性能中的作用很重要。看看示例,當(dāng)前面調(diào)用 filter() 方法時(shí),后面的函數(shù)已經(jīng)在較小的數(shù)據(jù)集上操作了。

這本書解釋了最普及的函數(shù),并介紹了該如何有效地應(yīng)用它們,以及如何以函數(shù)的方式編寫簡(jiǎn)潔的代碼。本書適合已經(jīng)具有一些編碼經(jīng)驗(yàn)的開發(fā)人員。

圖源:unsplash

軟件工程領(lǐng)域從不缺少好書,筆者推薦的這三本書也是可以找到替代品的。但讀完文中這些,足以讓你交付可讀可伸縮的代碼了。


文章題目:有哪些可以提升編程技能的好書值得推薦?
瀏覽地址:http://www.dlmjj.cn/article/coidocj.html