自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

有哪些可以提升編程技能的好書值得推薦?

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

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

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

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

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

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

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

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

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

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

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

另一個例子是如何有效地使用if 條件。它們用起來很簡單,但能顯著降低代碼的可讀性。

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

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

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

不過,對初級開發(fā)人員而言,構(gòu)建無狀態(tài)序列很難。即使是對于經(jīng)驗豐富但從未使用過函數(shù)式編程的開發(fā)人員來說,編寫高效且可維護(hù)的函數(shù)代碼也是一個挑戰(zhàn)。下面是科特林中對偶數(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() 

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

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

[[349243]]

圖源:unsplash

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

 

責(zé)任編輯:趙寧寧 來源: 讀芯術(shù)
相關(guān)推薦

2019-08-05 15:07:04

2021-12-26 09:22:44

前端Css圖標(biāo)

2015-12-02 09:59:14

2022-08-17 11:10:58

托管服務(wù)IT領(lǐng)域

2024-04-22 15:00:00

AIAI輔助編程工具開發(fā)

2020-04-27 11:39:42

編程程序員技術(shù)

2020-12-28 08:46:38

編程開發(fā)技能

2023-12-15 10:14:38

C++模板編程

2014-04-25 09:31:30

2023-05-15 16:46:03

2019-09-25 11:39:07

程序員編程技術(shù)

2022-06-07 10:28:53

云遷移云計算

2022-11-30 08:17:41

JVM調(diào)優(yōu)技巧

2022-05-25 14:35:57

加密貨幣比特幣以太坊

2022-08-02 15:18:00

React開源項目

2023-08-14 08:34:14

GolangHttp

2011-03-07 15:49:08

2020-07-14 08:45:13

Flink特性jira

2011-01-06 09:17:10

創(chuàng)新HadoopSharePoint
點贊
收藏

51CTO技術(shù)棧公眾號