代码里的世界观 通往架构师之路 7115495238,9787115495235

配送至
$ $ USD 美元

编辑推荐

IBM软件架构师对编程的13年经验总结和思考
从简单的代码出发,并结合应用场景,梳理出多种基本或高级的代码编程技巧
干货十足,实际案例丰富,有鞭辟入里又能深入浅出的总结,还有对人生的思考

媒体推荐

如何持续进阶成长,是每个程序员都非常关心的问题。在和一些年轻同事交流的时候,经常有人谈到进阶的困惑,他们都希望在深入技术原理、降低进阶学习曲线等问题上高效一些,少走弯路。而好的图书是经验与智慧的沉淀,能大幅优化学习者的学习路径。本书非常适合有几年工作经验同时又渴望梳理基础、继续提高的年轻程序员阅读。这本书用严谨且亲切活泼的语言风格,结构化地阐述各种编程经验与规律,通过大量实例把知识点讲得清晰且深入。我相信本书可以很好地帮助你回归本质,梳理技术点,朝着架构师的方向继续前进。
——童长飚,ofo小黄车CTO

由于工作的原因,我接触过很多学生和技术人员,他们当中常常有人问我怎么做才能成长为一名架构师。这是一个很难回答的问题。但我深知,任何一名程序员成长为架构师都要经过一段长期而艰苦的历练。在这个过程中,他/她不仅仅要全身心地投入到程序设计当中,还要了解用户需求、市场需求、当前流行的设计技术及技术的发展方向,能够从宏观上做系统级的规划,知道各项技术对于软件的支撑程度,将要遇到的各种困难及解决方案等。总之,它要求你不断地去思考、去实践、去设计、去学习、去提高。本书作者正是经历过这个过程的架构师,也是一个善于思考和总结的人,他把自已成长为架构师的历程以幽默、轻松的语言汇成了这本书,从中点出了将要成为构架师的你需要掌握的zui基本的点。所以,我阅读时,仿佛在跟作者一同进行了一次深入的软件构建之旅,受益非浅。我相信每一个阅读本书的人,都能够从中获取对构建软件有用的知识。
——张小东,哈尔滨工业大学计算机系老师

本书是作者对自己多年软件开发工作的思考和总结。我很吃惊作者能把这些琐碎的技术点梳理和总结得如此之好,而且讲述得如此有趣。书中的很多知识点,我觉得对每个程序员都很有帮助。我作为一名老程序员,也收获不少。如作者所说:“如何能让凌乱的代码组织得更好,正是本书要讨论的重点内容。”而良好的代码结构对于软件产品的可维护性和可扩展性非常重要,也是绝大部分软件开发人员在日常工作中必须注意的问题。因此,我很高兴向大家推荐此书。
——方晟,安捷伦高级技术架构师

作为本书的D一批读者,我非常荣幸。这是一本充满诚意的书,书中每一行文字都是作者十多年工作的精华。作者运用生动幽默的语言给我们打造了一份很好的技术人员进阶指南。有趣的比喻让复杂的概念和技术跃然纸上,读完之后仔细回想,竟果真如此。恰当的对比让晦涩难懂的知识点变得脉络清晰。书中既指出了一些常犯错误,使初级程序员能够防患于未然,又总结了多年的工作技巧,使其能够达到事半功倍的效果。此书将是我架构师成长之路上的指路明灯。另外,本书后面非技术章节里的总结,同样也让我受益匪浅。
——马建章,甲骨文软件开发工程师

作者简介

余叶,现任IBM架构师,曾jiu职于是德科技和中国航信。
爱代码,爱思考。
研究过已经死亡的MFC,还精通步入颓势的.NET,之后又在方兴未艾的iOS领域做架构师,顺势玩了玩Java,了解了服务端开发。不知不觉中,前端也积累了一定的经验。越做越杂之后,有了个体面的称呼“遮羞”:全栈工程师。

目录

第 1章 程序世界的两个基本元素 1
1.1 数据和代码的相互伪装 1
1.2 数据和代码的关系 3
1.3 总结 3
第 2章 用面向对象的方式去理解世界 4
2.1 好的程序员是安徒生 4
2.2 封装——招兵买马,等级森严 5
2.2.1 从单细胞到高等生物 5
2.2.2 public——对象的外观 6
2.2.3 private——水下的冰川 10
2.2.4 protected——内外兼修 11
2.2.5 封装总结 12
2.3 继承——快速进化 13
2.4 多态——抽象的基石 15
2.5 总结 16
第3章 面向抽象编程——玩玩虚的
更健康 17
3.1 抽象最讨厌的敌人:new 17
3.2 消灭new的两件武器 19
3.2.1 控制反转——脏活让别人去干 19
3.2.2 工厂模式——抽象的基础设施 20
3.2.3 new去哪里了呢? 21
3.3 抽象到什么程度? 22
3.4 总结 23
第4章 耦合其实无处不在 24
4.1 耦合的种类 24
4.1.1 数据之间的耦合 24

4.1.2 函数之间的耦合 24
4.1.3 数据和函数之间的耦合 25
4.1.4 耦合种类的总结 26
4.2 耦合中既有敌人也有朋友 26
4.3 坏耦合的原因 28
4.3.1 刻舟求剑 28
4.3.2 “谈恋爱”是个危险的行为 29
4.3.3 侵占公共资源 29
4.3.4 需求变化——防不胜防 30
4.4 解耦的原则 30
4.4.1 让模块逻辑独立而完整 30
4.4.2 让连接桥梁坚固而兼容 34
4.5 总结 35
第5章 数据的种类——生命如此多娇 36
5.1 常用数据类型 36
5.1.1 string类型:人机沟通的
桥梁 36
5.1.2 int类型:多变的万花筒 37
5.1.3 bool类型:能量巨大的原子 37
5.2 按生命周期划分数据 39
5.3 两个重要的数据容器 40
5.3.1 数组——容器之王 40
5.3.2 散列表——银行的保险柜 41
5.3.3 容器总结 46
5.4 对象的种类 46
5.4.1 实体对象——光鲜的主角 46
5.4.2 值对象——配角或道具 46
5.5 描述数据的数据 47
5.6 总结 48
第6章 数据驱动——把变化抽象成
数据 49
6.1 三个案例 49
6.2 数据驱动的好帮手:反射 53
6.2.1 反射是将代码数据化 54
6.2.2 反射也是一把双刃剑 54
6.2.3 各种语言对反射的支持 55
6.3 总结 55
第7章 对象之间的关系——父子、
朋友或情人 57
7.1 继承——父子关系 57
7.1.1 里氏替换原则——儿子顶替
父亲 57
7.1.2 鸵鸟非鸟 58
7.1.3 不听老人言 60
7.2 组合——朋友关系 61
7.2.1 组合与继承的区别 62
7.2.2 组合和继承的联系 63
7.2.3 策略模式——组装车间 64
7.2.4 组合的总结 66
7.3 依赖——情人关系 67
7.3.1 依赖和组合的差别 67
7.3.2 迷人的双向依赖 68
7.3.3 扑朔迷离的访问者模式 69
7.3.4 依赖的总结 74
7.4 总结 74
第8章 函数的种类——迷宫的结构 75
8.1 面向对象的函数叫方法 75
8.2 参数是函数的原材料 75
8.2.1 参数在函数中的地位 75
8.2.2 参数存在的形式 76
8.3 返回值对函数的意义 76
8.3.1 有返回值函数 77
8.3.2 void函数 77
8.4 值传递、引用传递和指针传递 78
8.5 有状态函数和无状态函数 80
8.6 静态函数和普通函数 82
8.7 能驾驭其他函数的函数 84
8.8 编译器做过手脚的函数 84
8.8.1 函数重载 84
8.8.2 泛型函数 85
8.9 总结 86
第9章 面向接口编程——遵循契约
办事 87
9.1 接口和抽象类——分工其实挺明确 87
9.2 接口的应用场景 89
9.2.1 先签约,后对接 90
9.2.2 专注抽象,脱离具体 92
9.2.3 解开耦合,破除缠绕 93
9.2.4 3个场景的总结 95
9.3 接口和函数指针 95
9.3.1 原来是亲兄弟 95
9.3.2 接口的优势 96
9.3.3 函数指针的优势 97
9.3.4 两兄弟的总结 99
9.4 函数指针的应用场景 99
9.4.1 简化版的Command模式 99
9.4.2 行为外包 101
9.4.3 结尾回调——异步搭档 103
9.5 总结 104
第 10章 if…else的多面性 105
10.1 两条兄弟语句 105
10.2 if…else的黑暗面 106
10.2.1 永无止境的长长铁链 106
10.2.2 牵一发而动全身 107
10.2.3 其实黑化不是我的错 108
10.3 开闭原则——if…else的天敌 108
10.3.1 扩展和修改的区别 109
10.3.2 为什么扩展比修改好? 110
10.4 化解if…else黑暗面 110
10.4.1 抽出共性 110
10.4.2 利用多态 112
10.4.3 数据驱动 114
10.4.4 动态类型 114
10.5 总结 116
第 11章 挖掘一件神秘武器——
static 117
11.1 static神秘在哪里? 117
11.2 static的特性 118
11.2.1 对代码的直接访问 118
11.2.2 隔离性和游离性 119
11.2.3 将函数参数反客为主 119
11.3 static的应用场景 120
11.3.1 实现工具包函数 120
11.3.2 实现单例也有门道 120
11.3.3 实现类扩展 123
11.3.4 让数据互动起来 128
11.3.5 构建上层建筑 128
11.4 总结 131
第 12章 把容易变化的逻辑,放在
容易修改的地方 132
12.1 一个和用户的故事 132
12.2 一个和销售的故事 134
12.3 一个和产品经理的故事 136
12.4 一个和运维的故事 136
12.5 总结 137
第 13章 隐式约定——犹抱琵琶半
遮面 139
13.1 拨开隐式约定的神秘面纱 139
13.1.1 隐式约定就在你身边 139
13.2.2 隐式约定的重要特征 141
13.2.3 隐式约定的其他形式 142
13.2.4 隐式约定的风险与缺陷 142
13.2 调料包数据 143
13.3 越简单的功夫越厉害 145
13.4 总结 148
第 14章 异常,天使还是魔鬼? 150
14.1 三个江湖派别 150
14.2 异常的种类 151
14.3 异常的throw:手榴弹什么时
候扔? 153
14.4 异常的catch——能收炸弹的
垃圾筐 154
14.5 异常的使用技巧 156
14.5.1 看病要趁早 156
14.5.2 不要加大catch的负担 156
14.5.3 避免try花了眼 157
14.5.4 保持克制,不要滥用 157
14.6 总结 158
第 15章 多线程编程——在混沌中
永生 159
15.1 几个基础概念 159
15.1.1 每个线程都有独立的安全
港——栈区 159
15.1.2 超乎想象的细微步骤——
线程安全 160
15.2 互斥——相互竞争 161
15.3 同步——相互协作 163
15.3.1 同步的本质 163
15.3.2 共享变量——一块公用的
黑板 164
15.3.3 条件变量——用交通灯来
指挥 165
15.3.4 同步和互斥——本是同根
生 165
15.4 异步——各忙各的 166
15.4.1 异步的本质 166
15.4.2 等待烧水,顺便洗碗 167
15.4.3 明修栈道,暗度陈仓 167
15.4.4 异步和函数回调 169
15.4.5 有关异步的问与答 170
15.4.6 异步总结 171
15.5 阻塞与非阻塞 172
15.6 总结 173
第 16章 单元测试——对代码庖丁
解牛 174
16.1 单元测试的诞生 174
16.2 单元测试的进化 175
16.2.1 大量繁殖 175
16.2.2 寻找盟友 176
16.2.3 划分地盘 176
16.2.4 反客为主 177
16.3 编写单元测试的基本原则 178
16.4 如何让代码面向单元测试 181
16.4.1 买一个西瓜,无须先买
菜市场 181
16.4.2 只是演习,不玩真的 183
16.4.3 人机交互代码,怎么
攻克? 183
16.5 最后的忠告:无招胜有招 185
16.6 总结 186
第 17章 代码评审——给身体排排毒 187
17.1 排毒要养成习惯 187
17.2 磨刀不误砍柴工 188
17.3 经验点滴——关键是流程化 188
17.4 11个案例 189
17.5 总结 196
第 18章 编程就是用代码来写作 197
18.1 程序员与作家的区别 197
18.2 如何提高写作水平 198
18.2.1 英语还是躲不了的 198
18.2.2 重视的态度 198
18.2.3 需要长期的积累 199
18.3 案例解析——咬文嚼字很重要 201
18.4 谨慎对待注释 202
18.4.1 必须存在的注释 203
18.4.2 做做样子的注释 203
18.5 总结 204
第 19章 程序员的精神分裂——
扮演上帝与木匠 205
19.1 一个脑袋,两种身份 205
19.2 上帝模式:开天辟地,指点江山 205
19.2.1 “上帝”在干什么 206
19.2.2 和产品设计的争夺 206
19.3 木匠模式:致富只有勤劳一条路 208
19.4 总结 209
第 20章 程序员的技术成长——
打怪升级之路 210
20.1 技术成长三部曲 210
20.2 码农都是好老师 211
20.3 重视编程效率 212
20.4 尽量通过工作去锻炼 212
20.5 三分之一的工匠精神 214
20.6 明白架构师的含义 214
20.7 总结 214
第 21章 语言到底哪种好——
究竟谁是屠龙刀 216
21.1 军队的背后是国家实力的较量 216
21.2 专一和多情哪个好? 216
21.2.1 切换语言的成本到底有多大? 217
21.2.2 海、陆、空齐备最好 217
21.3 如何快速学习一门新语言 218
21.3.1 边学边练 219
21.3.2 抓住该语言的主要特性去学 219
21.4 总结 219
第 22章 程序员的组织生产——
让大家更高效和亲密 220
22.1 敏捷开发:及时反馈,小步快跑 220
22.2 双人编程:双人搭配,干活超累 222
22.3 封闭开发:并不是蹲大狱 222
22.4 总结 223
第 23章 程序员的职业生涯——
选择比努力更重要 224
23.1 程序员到底能干多久? 224
23.2 程序员的中年危机 225
23.3 自问一:你适不适合当程序员? 226
23.4 自问二:程序员是否最适合你? 227
23.5 自问三:问问自己有没有双门槛 228
23.6 自问四:程序员最适合转什么行? 229
23.7 总结 230
ISBN7115495238,9787115495235
出版社人民邮电出版社
作者余叶
尺寸16