• google软件工程 网络技术 (美)提图斯·温特斯,(美)汤姆·曼什雷克,(美)海勒姆·赖特 新华正版
  • google软件工程 网络技术 (美)提图斯·温特斯,(美)汤姆·曼什雷克,(美)海勒姆·赖特 新华正版
21年品牌 40万+商家 超1.5亿件商品

google软件工程 网络技术 (美)提图斯·温特斯,(美)汤姆·曼什雷克,(美)海勒姆·赖特 新华正版

63.9 4.3折 148 全新

库存63件

湖南长沙
认证卖家担保交易快速发货售后保障

作者(美)提图斯·温特斯,(美)汤姆·曼什雷克,(美)海勒姆·赖特

出版社中国电力出版社

ISBN9787519864705

出版时间2022-03

版次1

装帧平装

开本16

页数596页

字数776千字

定价148元

货号xhwx_1202611376

上书时间2024-03-28

语欣书店

四年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
正版特价新书
商品描述
目录:

序1

前言3

部分理论

章什么是软件工程13

时间与变化15

海勒姆定律18

案例:哈希排序18

为什么目标不是“没有变化”呢20

规模与效率21

阻碍规模化的政策22

促进规模化的政策24

案例:编译器升级24

左移思想26

权衡与成本28

案例:白板笔29

决策投入30

案例:分布式构建30

案例:时间与规模的博弈32

数据驱动的决策32

软件工程vs编程33

小结34

本章要点34

第二部分

第2章如何更好地参与团队合作37

隐藏代码37

天才神话38

隐藏有害40

及早检测41

巴士系数41

小步快跑42

拒绝隐藏44

为了团队44

社交的三大支柱45

三大支柱的重要46

谦虚、尊重和信任46

无指责的回顾50

谷歌范儿(googley)52

小结53

本章要点53

第3章知识共享55

学的挑战55

知识共享的哲学57

设定基调:心理安全58

导师制58

大型群体的心理安全59

不断充实知识60

提问60

理解上下文61

扩大提问渠道:向社区提问62

群聊62

邮件列表63

yaqs:问答台63

分享你的知识:你有可以教别人的地方64

officehours64

技术讲座与课程64

文档65

代码67

组织知识发展68

培养知识分享的68

建立规范的信息源70

让信息流动73

可读:通过代码评审规范化指导74

什么是可读流程74

为什么需要可读流程75

小结78

本章要点78

第4章等工程79

人类的偏见80

理解多样的必要82

建立多元能力82

使多样具有可作84

拒绝单一的方式85

挑战既定流程86

价值观与成果87

保持好奇心,向前推进88

小结88

本章要点89

第5章团队的艺术91

经理和技术主管(或两者兼任)91

工程经理92

技术主管92

技术主管经理92

从个人贡献者到93

专享需要担心的是……嗯,94

仆人式95

工程经理96

“经理”是一个令人厌恶的词96

如今的工程经理96

反模式98

反模式:雇用庸的人98

反模式:忽视低绩效员工99

反模式:忽视“人”的问题100

反模式:做老好人101

反模式:打破招聘门槛102

反模式:像对待孩子一样对待你的团队102

积极的模式103

抛弃“自我”意识103

成为一名禅师104

成为催化剂106

移除障碍106

成为老师和导师107

设定清晰的目标107

坦诚108

追踪感109

出乎意料的问题110

其他提示和111

对待人像植物一样113

内在激励和外在激励114

小结115

本章要点115

第6章大规模团队力117

是在做决策118

飞机的故事118

识别盲点119

识别关键的权衡120

决策,然后迭代120

是不在场122

你的使命:建立一个“自驱”的团队123

划分问题空间123

是在扩展126

成功的循环127

重要vs紧急128

学会放弃130

保护你的精力131

小结133

本章要点133

第7章度量工程生产力135

为什么要度量工程生产力135

鉴别:它值得度量吗137

根据目标和信号来选择有意义的指标141

目标142

信号144

指标145

使用数据验证指标145

采取行动并跟踪结果150

小结150

本章要点150

第三部分流程

第8章风格指南与规则155

为什么要有规则156

创建规则157

指导原则157

风格指南165

修改规则168

流程169

风格仲裁者170

例外情况170

指南171

应用规则173

错误检查工具174

代码格式化工具175

小结177

本章要点177

第9章代码评审179

代码评审流程180

谷歌如何进行代码评审181

代码评审的好处184

代码正确185

代码理解187

代码一致187

心理和方面的好处188

知识共享189

代码评审很好实践190

礼貌而专业190

小的变更191

清晰的变更描述193

评审者数量少化193

尽可能的自动化194

代码评审类型194

绿地代码评审194

行为变更、改进和优化195

缺陷修复和回滚195

重构和大规模变更196

小结197

本章要点197

0章文档199

什么是文档200

为什么需要文档200

像代码一样对待文档202

了解文档的读者204

读者的类型205

文档类型206

参文档207

设计文档210

新手教程210

概念文档212

着陆页面213

文档评审214

文档的哲学216

who,what,when,where和why216

开头,中间和结尾217

很好文档的要素217

丢弃文档218

什么时候需要技术文档工程师219

小结219

本章要点220

1章测试概述221

为什么要写测试222

“googlewebserver”的故事223

当今开发速度下的测试224

编写,运行,响应224

测试代码的好处227

设计测试套件228

测试粒度229

测试范围233

碧昂丝规则235

代码覆盖率236

谷歌规模下的测试237

大型测试套件的陷阱238

谷歌测试的历史239

入职培训课240

测试认证241

“马桶测试”241

如今的测试242

自动化测试的局限243

小结244

本章要点244

2章单元测试245

可维护的重要246

止脆弱的测试247

努力做到不更改测试247

通过公共api进行测试248

测试状态,而不是交互252

编写清晰的测试253

使测试完整简洁254

测试行为,而不是方255

不要把逻辑放进测试260

编写清晰的失败信息261

测试与代码共享:damp,而不是dry263

共享值265

共享设置267

共享helper和验证269

定义测试基础设施270

小结270

本章要点270

3章测试替身273

测试替身对软件开发的影响274

谷歌的测试替身274

基本概念275

测试替身的示例275

缝(seams)276

模拟(mocking)框架277

使用测试替身的技术279

伪造(faking)279

打桩(stubbing)279

交互测试280

实际实现281

实际实现比隔离更好281

如何决定何时使用实际实现283

伪造(faking)285

为什么伪实现(fakes)如此重要286

什么时候写伪实现286

伪实现的度287

伪实现应该被测试288

如果没有伪实现怎么办288

打桩289

过度使用打桩的危险289

何时使用打桩合适291

交互测试292

状态测试优于交互测试292

何时使用交互测试合适293

交互测试的很好实践294

小结296

本章要点296

4章较大型的测试299

什么是较大型的测试299

度300

单元测试中的常见问题301

为什么不要有较大型的测试303

谷歌的较大型的测试304

较大型的测试和时间305

谷歌规模下的较大型的测试306

大型测试的结构308

被测系统(sut)309

测试数据314

验证315

较大型的测试的类型316

一个或多个交互二进制文件的功能测试316

浏览器和设备测试317

能、负载和压力测试317

部署配置测试318

探索测试318

a/b差异回归测试319

用户验收测试(uat)321

探针和金丝雀分析321

灾难恢复与混沌工程322

用户评估324

大型测试和开发者工作流325

编写大型测试325

运行大型测试326

大型测试的所有权329

小结330

本章要点330

5章弃用331

为什么弃用332

为什么弃用很难333

将弃用融入设计335

弃用的类型336

建议弃用336

强制弃用337

弃用警告338

弃用流程的管理339

流程负责人340

里程碑340

弃用的工具341

小结342

本章要点343

第四部分工具

6章版本控制与分支管理347

什么是版本控制348

为什么版本控制很重要349

集中式版本控制系统vs分布式版本控制系统351

真实来源354

版本控制vs依赖管理356

分支管理356

分支等同于在制品357

开发分支358

发布分支359

谷歌的版本控制360

单一版本361

场景:多个可用版本362

“单一版本”规则363

(几乎)没有长周期的分支363

发布分支呢365

单一代码仓(monore)365

版本控制的未来367

小结369

本章要点370

7章代码搜索371

codesearch的用户界面372

如何使用codesearch373

在哪里373

做什么374

如何用374

为什么375

谁以及何时375

为什么需要一个单独的web工具375

规模375

无需设置即可浏览全局代码376

专业化377

与其他开发工具集成377

开放api379

规模对设计的影响379

搜索查询延迟380

索引延迟381

谷歌的实现382

搜索索引382

排序383

权衡387

完整:代码库的head387

完整:所有结果vs相关的结果387

完整:headvs分支vs所有历史vs工作空间388

表达:tokenvs子串vs正则表达式389

小结390

本章要点391

8章构建工具与构建哲学393

构建系统的目的393

没有构建系统会发生什么395

但是我只需要一个编译器395

用shell脚本来拯救396

现代构建系统397

都是为了依赖397

基于任务的构建系统398

基于制品的构建系统402

分布式构建408

时间,规模,权衡412

处理模块和依赖413

使用细粒度依赖与1:1:1规则413

小化模块可见414

管理依赖414

小结419

本章要点420

9章critique:谷歌的代码评审工具421

代码评审工具的原则421

代码评审流程423

通知424

步:创建一个变更425

差异比较425

分析结果426

紧密的工具集成428

第二步:请求评审429

第三步和第四步:理解和变更430

430

了解变更状态432

第五步:批准变更(评价变更)434

第六步:提交变更435

提交后:跟踪历史436

小结437

本章要点438

第20章静态分析439

有效静态分析的特点440

可扩展440

易用440

让静态分析发挥作用的关键经验441

关注开发者的体验441

让静态分析成为核心开发者工作流的一部分442

赋予用户贡献的权力442

tricorder:谷歌的静态分析台443

集成的工具444

集成反馈渠道445

建议的修复446

按项目定制447

预提交448

编译器集成448

编辑和浏览代码时的分析449

小结450

本章要点450

第21章依赖管理451

为什么依赖管理这么难453

的需求和菱形依赖453

引入依赖455

兼容承诺455

引入时的注意事项457

谷歌如何处理引入的依赖459

从理论上讲,依赖管理460

没有变化(又名静态依赖模型)461

语义化版本号462

绑定分发模式463

liveathead464

semver的局限465

semver可能过度约束466

semver可能过度承诺467

动机468

小版本选择469

那么,semver有效吗470

资源无限的依赖管理471

导出依赖473

小结477

本章要点477

第22章大规模变更479

什么是大规模变更480

谁来处理lsc481

原子变更的障碍483

技术483

合并483

“没有闹鬼的墓地”484

异构484

测试485

代码评审487

lsc的基础设施489

政策与489

代码库分析490

变更管理491

测试491

语言支持491

lsc流程493

授权493

变更创建494

切片与提交494

清理498

小结498

本章要点498

第23章持续集成499

ci的概念501

快速反馈循环501

自动化503

持续测试505

ci的挑战511

封闭测试512

谷歌的ci515

ci案例研究:googletakeout518

但是我无力做ci524

小结525

本章要点525

第24章持续交付527

持续交付在谷歌的语528

速度是一项团队运动:如何将部署分解为可管理的单元529

隔离评估变更:特开关530

力求敏捷:建立发布火车531

没有一个二进制是的531

赶上你的发布期限532

质量与聚焦用户:只发布有用的功能533

左移:更早地做出数据驱动的决策534

改变团队:建立发布规则535

小结536

本章要点537

第25章计算即服务539

驯服计算环境540

将琐事自动化540

容器化与多租户542

结545

为托管计算编写软件545

为失效设计架构545

批处理vs服务547

管理状态549

连接到服务550

一次代码551

caas随时间和规模的演化552

抽象容器552

一个服务统御余众555

提交的配置557

选择计算服务558

集中化与定制化559

抽象层次:serverless561

公有云vs私有云565

小结566

本章要点567

后记569

内容简介:

如今,软件工程师不仅需要知道如何有效地编程,还需要知道如何发展适当的工程实践,以使代码库可持续且健康。这本书强调了编程和软件工程之间的区别。
软件工程师如何管理一个活跃的代码库,这个代码库在其生命周期里不断响应变化的需求,不断地发展?软件工程师titu winter和hyrum wright,携手技术作家tom manhreck,基于他们在谷歌的经验,坦率而有见地的为大家介绍了靠前的从业者是如何构建和维护软件的。
你将学到软件组织在设计、架构、编写和维护代码时应牢记的三个基本原则:
时间如何影响软件的可持续,以及如何使代码随着时间的推移而具有韧。
规模如何影响工程组织内软件实践的可行。
在评估设计和开发决策时,一位典型的工程师需要做出哪些权衡。

—  没有更多了  —

以下为对购买帮助不大的评价

正版特价新书
此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP