歡迎光臨中圖網(wǎng) 請 | 注冊
> >
代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā)

代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā)

作者:章淼
出版社:電子工業(yè)出版社出版時(shí)間:2022-03-01
開本: 32開 頁數(shù): 296
中 圖 價(jià):¥49.0(4.9折) 定價(jià)  ¥100.0 登錄后可看到會員價(jià)
加入購物車 收藏
運(yùn)費(fèi)6元,滿39元免運(yùn)費(fèi)
?新疆、西藏除外
溫馨提示:5折以下圖書主要為出版社尾貨,大部分為全新(有塑封/無塑封),個(gè)別圖書品相8-9成新、切口
有劃線標(biāo)記、光盤等附件不全詳細(xì)品相說明>>
本類五星書更多>

代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā) 版權(quán)信息

代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā) 本書特色

適讀人群 :軟件工程師和管理者;計(jì)算機(jī)和軟件方向的在校學(xué)生。● 百度學(xué)院精品課“代碼的藝術(shù)”核心內(nèi)容首次成書,百度技術(shù)培訓(xùn)中心官方指定用書。 ● 清華大學(xué)、IT名企開設(shè)“代碼的藝術(shù)”課程及講座,課程獲廣泛贊譽(yù)。 ● 成為優(yōu)秀軟件工程師三條路徑: (1)學(xué)習(xí)-思考-實(shí)踐; (2)知識-方法-精神; (3)基礎(chǔ)乃治學(xué)之根本。 ● 具備正確的意識比掌握具體的知識更重要。 ● 讀者對象:軟件工程師和管理者;計(jì)算機(jī)和軟件方向的在校學(xué)生。 ● 隨書附贈(zèng)配套視頻,作者在線一對一答疑等增值服務(wù)。

代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā) 內(nèi)容簡介

● 本書是作者圍繞軟件工程能力所做的系列培訓(xùn)的內(nèi)容匯編。這些內(nèi)容來源于作者20 多年以來對軟件工程的學(xué)習(xí)體會和項(xiàng)目實(shí)踐,以及對中國工業(yè)界軟件工程師的觀察和教育實(shí)踐。 ● 全書共8章,第1 章說明了什么是軟件工程能力,闡述了軟件工程能力中的素質(zhì)要求。第2~8章分別從代碼、文檔、項(xiàng)目管理這三個(gè)方面講解了提升軟件工程能力素質(zhì)的實(shí)踐方法。 對于代碼,第2章"代碼的藝術(shù)”對其進(jìn)行了總體說明,第3 章重點(diǎn)說明了代碼評審,第4章以Mini-spider 為例說明了方法如何運(yùn)用。 對于文檔,第5章說明了如何寫好項(xiàng)目文檔,第6章說明了做研究的基本方法。對于項(xiàng)目管理,第7章簡要說明了如何做好項(xiàng)目管理,第8章重點(diǎn)說明了如何做好項(xiàng)目溝通。

代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā) 目錄

● 第1章 軟件工程能力

1.1 為什么要重視工程能力 / 3

1.2 什么是工程能力 / 5

1.2.1 工程能力的誤區(qū) / 5

1.2.2 工程能力的定義 / 6

1.3 怎樣提升工程能力 / 11


● 第2章 代碼的藝術(shù)

2.1 背景和初衷 / 17

2.2 代碼和藝術(shù) / 18

2.2.1 代碼也能成為藝術(shù)作品 / 18

2.2.2 軟件工程師和“碼農(nóng)” / 22

2.2.3 來自藝術(shù)的啟發(fā) / 24

2.2.4 寫代碼并非易事 / 26

2.3 好代碼和壞代碼 / 28

2.3.1 好代碼的特性 / 28

2.3.2 壞代碼的例子 / 33

2.4 好代碼從哪里來 / 35

2.4.1 好代碼不止于編碼 / 35

2.4.2 需求分析和系統(tǒng)設(shè)計(jì) / 36

2.5 如何做好需求分析 / 41

2.5.1 如何描述需求 / 41

2.5.2 對需求分析的誤解 / 43

2.5.3 需求分析的重要性 / 47

2.6 如何做好系統(tǒng)設(shè)計(jì) / 47

2.6.1 什么是系統(tǒng)設(shè)計(jì) / 48

2.6.2 設(shè)計(jì)文檔的分類 / 49

2.6.3 什么是系統(tǒng)架構(gòu) / 50

2.6.4 系統(tǒng)設(shè)計(jì)的原則和方法 / 52

2.6.5 重視對外接口 / 56

2.7 如何寫出好代碼 / 59

2.7.1 代碼的溝通價(jià)值 / 59

2.7.2 模塊的設(shè)計(jì)方法 / 64

2.7.3 劃分模塊的方法 / 71

2.7.4 函數(shù)的設(shè)計(jì)方法 / 75

2.7.5 代碼塊的編寫注意事項(xiàng) / 85

2.7.6 軟件開發(fā)中的命名 / 89

2.8 如何支持系統(tǒng)運(yùn)營 / 90

2.8.1 可監(jiān)測性的重要性 / 91

2.8.2 以BFE開源項(xiàng)目為例 / 92

2.9 成為優(yōu)秀軟件工程師的三條路徑 / 93

2.9.1 路徑一:學(xué)習(xí)—思考—實(shí)踐 / 93

2.9.2 路徑二:知識—方法—精神 / 96

2.9.3 路徑三:基礎(chǔ)乃治學(xué)之根本 / 98


● 第3章 代碼評審

3.1 代碼評審的常見誤區(qū) / 103

3.2 為什么要做好代碼評審 / 104

3.2.1 代碼評審的重要意義 / 104

3.2.2 沒有做好代碼評審的后果 / 106

3.2.3 為什么要提升代碼質(zhì)量 / 106

3.2.4 為什么要提升編碼能力 / 108

3.3 如何做好代碼評審 / 108

3.3.1 代碼評審的常見問題 / 109

3.3.2 代碼評審的正確態(tài)度 / 109

3.3.3 代碼評審的推薦步驟 / 111

3.3.4 對壞代碼的簡單判斷 / 112

3.3.5 代碼評審的注意事項(xiàng) / 113

3.4 如何成為好的代碼評審人 / 116


● 第4章 “代碼的藝術(shù)”應(yīng)用

4.1 需求的分析 / 121

4.1.1 題目說明 / 121

4.1.2 功能分析 / 122

4.2 軟件的架構(gòu) / 123

4.2.1 模塊切分 / 123

4.2.2 系統(tǒng)架構(gòu) / 128

4.2.3 軟件組裝 / 130

4.2.4 crawler 間的數(shù)據(jù)共用 / 132

4.2.5 數(shù)據(jù)封裝 / 133

4.2.6 crawler 的執(zhí)行邏輯 / 134

4.3 多線程機(jī)制 / 135

4.3.1 數(shù)據(jù)互斥訪問 / 136

4.3.2 臨界區(qū)注意事項(xiàng) / 138

4.3.3 任務(wù)的分發(fā) / 141

4.3.4 程序的優(yōu)雅退出 / 143

4.4 其他實(shí)現(xiàn)細(xì)節(jié) / 146

4.4.1 配置的讀取 / 146

4.4.2 種子信息的讀取 / 147

4.4.3 import 的使用 / 150

4.4.4 異常處理 / 151

4.4.5 構(gòu)造函數(shù)的使用 / 153

4.4.6 正則表達(dá)式的使用 / 154

4.5 延伸思考 / 156

4.5.1 實(shí)現(xiàn)對各網(wǎng)站的限速 / 156

4.5.2 從單機(jī)擴(kuò)展到分布式 / 157


● 第5章 項(xiàng)目文檔

5.1 正確認(rèn)識項(xiàng)目文檔 / 161

5.1.1 項(xiàng)目文檔的重要作用 / 161

5.1.2 項(xiàng)目文檔的常見誤區(qū) / 162

5.1.3 項(xiàng)目文檔的常見問題 / 164

5.1.4 什么時(shí)候需要寫項(xiàng)目文檔 / 165

5.1.5 項(xiàng)目文檔是寫給誰的 / 167

5.1.6 項(xiàng)目文檔的基本規(guī)范 / 169

5.2 項(xiàng)目文檔的編寫 / 170

5.2.1 編寫順序 / 170

5.2.2 文檔標(biāo)題 / 171

5.2.3 段落編寫 / 173

5.2.4 問題劃分 / 176

5.2.5 表述模式 / 177

5.3 項(xiàng)目文檔中的圖片 / 179

5.4 文檔的評審 / 185

5.4.1 文檔評審常見問題 / 185

5.4.2 文檔評審的方法 / 186

5.5 文檔的存放 / 187

5.5.1 文檔存放常見錯(cuò)誤 / 187

5.5.2 文檔存放的建議 / 188

5.5.3 文檔索引的例子 / 189

5.5.4 存放工具的選擇 / 192

5.6 文檔編寫工具 / 194

5.7 如何提高文檔編寫能力 / 195


● 第6章 做研究

6.1 什么是研究 / 199

6.2 如何做好研究 / 201

6.2.1 發(fā)現(xiàn)問題 / 201

6.2.2 分析問題 / 203

6.2.3 解決問題 / 205

6.3 做好研究的**素質(zhì) / 206

6.3.1 關(guān)于做人 / 206

6.3.2 關(guān)于做事 / 208

6.3.3 關(guān)于做學(xué)問 / 209


● 第7章 項(xiàng)目管理

7.1 重視項(xiàng)目管理 / 213

7.2 相關(guān)基本概念 / 215

7.3 項(xiàng)目管理的過程和步驟 / 218

7.3.1 項(xiàng)目啟動(dòng)和規(guī)劃 / 219

7.3.2 項(xiàng)目執(zhí)行和監(jiān)控 / 224

7.3.3 項(xiàng)目總結(jié)與回顧 / 227


● 第8章 項(xiàng)目溝通

8.1 項(xiàng)目溝通的重要性 / 233

8.2 項(xiàng)目溝通方式及對比 / 235

8.3 面對面溝通 / 238

8.4 電話溝通 / 239

8.5 會議溝通 / 240

8.6 IM 工具溝通 / 245

8.7 Email 溝通 / 247


● 附錄A 延伸閱讀圖書推薦

軟件工程和編程思想類 / 251

項(xiàng)目管理類 / 252

項(xiàng)目文檔編寫和閱讀類 / 252

產(chǎn)品設(shè)計(jì)類 / 253


展開全部

代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā) 節(jié)選

1.1 為什么要重視工程能力 由于行業(yè)內(nèi)競爭加劇、成本上漲和產(chǎn)業(yè)升級等形勢的變化,工程能力受到越來越高的重視。 1. 形勢變化與挑戰(zhàn) *近幾年,軟件研發(fā)企業(yè)尤其是互聯(lián)網(wǎng)企業(yè)正面臨以下形勢的變化和挑戰(zhàn)。 (1)行業(yè)競爭的加劇。中國互聯(lián)網(wǎng)經(jīng)過20多年的發(fā)展,早已不是荒蠻之地,競爭的需要逼迫各企業(yè)在軟件研發(fā)的質(zhì)量和效率上不斷提高。 (2)成本的上漲。中國在研發(fā)成本尤其是人力成本方面上漲非?臁V袊浖こ處煹娜肆Τ杀疽殉^歐洲,和美國的差距也沒有那么大了。在這種情況下,業(yè)內(nèi)對于人均產(chǎn)出提出了更高要求。 (3)產(chǎn)業(yè)的升級。中國的互聯(lián)網(wǎng)企業(yè)普遍從toC轉(zhuǎn)向toB,而toB對軟件研發(fā)的質(zhì)量提出了更高要求。 2. 如何應(yīng)對挑戰(zhàn) 面對以上挑戰(zhàn),一些企業(yè)的應(yīng)對方法是延長工作時(shí)間、增加工作強(qiáng)度。部分公司出現(xiàn)了“996”(早9點(diǎn)上班,晚9點(diǎn)下班,每周工作6天)的工作制度。應(yīng)該說,這些方法給從業(yè)者的身體健康和正常生活帶來了嚴(yán)重的負(fù)面影響,它們也只能是短期行為,不可能被長期執(zhí)行。 從現(xiàn)實(shí)情況來看,其實(shí)國內(nèi)很多軟件工程師的工作效率是比較低的,并有巨大的提升空間。根據(jù)筆者多年的訪談反饋,很多軟件工程師已經(jīng)工作了8~10年,但他們的工作方法其實(shí)是錯(cuò)誤的。在以前人工成本較低、管理方法比較粗放的情況下,這些問題并沒有得到足夠重視。現(xiàn)在中國很多傳統(tǒng)行業(yè)在進(jìn)行轉(zhuǎn)型升級,因此中國的很多軟件工程師也需要升級了! 提升工程能力,是應(yīng)對以上變化和挑戰(zhàn)的重要解決之道。 3. 工程能力是制勝之本 在提升工程能力的路上,我們可能會聽到一些不同的聲音。有些人說,手頭的業(yè)務(wù)很忙,所以沒有時(shí)間提升工程能力;有些人說,現(xiàn)在的項(xiàng)目進(jìn)度已經(jīng)很緊湊了,按照正規(guī)的方法來工作會拖慢進(jìn)度,所以不能對工程能力有嚴(yán)格要求。 從使用不正規(guī)的方法到使用正規(guī)的方法,一定會有一些學(xué)習(xí)上的成本投入。更重要的是,工程能力不是錦上添花、可有可無,而是一種生存能力。很多項(xiàng)目的失敗,其實(shí)是輸在從業(yè)者工程能力的不足上了! 工程能力首先會影響“打的準(zhǔn)不準(zhǔn)”。如果從業(yè)者不能做好需求識別和分析,缺乏產(chǎn)品方面的意識,那么研發(fā)出的軟件就沒有市場和用戶。 工程能力還會影響“是否能打贏”。工程能力會影響軟件研發(fā)的效率、質(zhì)量和成本,一個(gè)低效率、低質(zhì)量和成本高的軟件項(xiàng)目是沒有市場競爭力的。 1.2 什么是工程能力 在了解了工程能力的重要性后,本節(jié)說明什么是工程能力。 1.2.1 工程能力的誤區(qū) 很多人可能會將“提升工程能力”等同于“寫好代碼”。 代碼確實(shí)是軟件研發(fā)的重要產(chǎn)出,但是工程能力的涉及范圍絕不僅僅限于編寫代碼。 軟件研發(fā)是一個(gè)需要多人共同參與完成的工作,提升工程能力也不限于“一個(gè)人”能力的提升。 工程能力反映的是團(tuán)隊(duì)的綜合素質(zhì)。要提高工程能力,不僅要看單兵素質(zhì),也要看團(tuán)隊(duì)能力;不僅要提升寫代碼的能力,也要提升其他方面的能力(見1.3節(jié)中的說明)。 工程,不僅僅應(yīng)用于自然科學(xué),也應(yīng)用于人文社會科學(xué)。只用自然科學(xué)的思路和方法來做工程,一定做不好。 在軟件研發(fā)過程中,很多從業(yè)者的大量時(shí)間其實(shí)并沒有用在琢磨技術(shù)上,而是用在了其他方面(比如溝通、項(xiàng)目協(xié)調(diào)、錯(cuò)誤設(shè)計(jì)導(dǎo)致的返工),這些方面的時(shí)間消耗往往也沒有得到大家的關(guān)注。很多項(xiàng)目的失敗并不是因?yàn)榧夹g(shù),而是因?yàn)槟切┓羌夹g(shù)的因素。 1.2.2 工程能力的定義 前面介紹了工程能力的重要性,但是我在這里認(rèn)真地問一句“工程能力到底是什么?”恐怕沒有幾個(gè)人能回答出來,而如果不解答這個(gè)問題,我們是無法在實(shí)踐中真正提升工程能力的。 在百度內(nèi)部材料《百度軟件工程能力定義》中,將工程能力定義為:使用系統(tǒng)化的方法,在保證質(zhì)量的前提下,更高效率地為客戶/用戶持續(xù)交付有價(jià)值的軟件或服務(wù)的能力。

代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā) 作者簡介

章淼,博士,百度智能云資深研發(fā)工程師,BFE開源項(xiàng)目發(fā)起人。 1997年至2006年在清華大學(xué)從事互聯(lián)網(wǎng)協(xié)議和網(wǎng)絡(luò)體系結(jié)構(gòu)的研究。 2012年加入百度,一直從事網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的研發(fā)工作。同時(shí)積極推動(dòng)百度的代碼質(zhì)量和工程能力的提升,百度技術(shù)培訓(xùn)中心“金牌講師”,曾任百度代碼規(guī)范委員會主席。

商品評論(0條)
暫無評論……
書友推薦
編輯推薦
返回頂部
中圖網(wǎng)
在線客服