-
>
決戰(zhàn)行測5000題(言語理解與表達(dá))
-
>
軟件性能測試.分析與調(diào)優(yōu)實(shí)踐之路
-
>
第一行代碼Android
-
>
深度學(xué)習(xí)
-
>
Unreal Engine 4藍(lán)圖完全學(xué)習(xí)教程
-
>
深入理解計(jì)算機(jī)系統(tǒng)-原書第3版
-
>
Word/Excel PPT 2013辦公應(yīng)用從入門到精通-(附贈(zèng)1DVD.含語音視頻教學(xué)+辦公模板+PDF電子書)
代碼的藝術(shù):用工程思維驅(qū)動(dòng)軟件開發(fā) 版權(quán)信息
- ISBN:9787121426711
- 條形碼:9787121426711 ; 978-7-121-42671-1
- 裝幀:一般純質(zhì)紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>
代碼的藝術(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ī)范委員會主席。
- >
自卑與超越
- >
名家?guī)阕x魯迅:故事新編
- >
隨園食單
- >
姑媽的寶刀
- >
莉莉和章魚
- >
中國人在烏蘇里邊疆區(qū):歷史與人類學(xué)概述
- >
推拿
- >
月亮虎