编辑推荐
《编程风格:好代码的逻辑》通过一个简单的词频统计任务来阐释不同的编程风格,帮助读者理解编写程序和构建系统的不同方法,被SoftwareDevelopmentTimes评为迄今为止zui好的程序设计书之一,在Amazon网站得到读者五星评价。内容简介
“同样的故事,不同的说法”,编程亦可如此。《编程风格:好代码的逻辑》分别使用33种方法,在不同的约束定义下,实现了同一个词频统计任务,展示出风格迥异的编程风格,帮助读者加深对程序设计和系统设计方式的理解,为读者提供崭新的编程思路。
《编程风格:好代码的逻辑》适合计算机专业的学生、有一定编程基础的程序员以及任何有志提高变成水平的人。作者简介
CristinaVideiraLopes是美国加州大学欧文分校,唐纳德?布伦信息与计算机科学学院信息学专业教授,研究方向是大规模数据和系统下的软件工程。在其职业生涯早年,曾是施乐帕罗奧多研究中心(XeroxPARC)面向方向编程及AspectJ编程语言团队的初创成员。除其研究项目以外,Cristina也是一位多产的软件开发者。她对于开源项目的贡献包括水下声纳调制解调软件和虚拟世界服务OpenSimulator。她是一家专注于为早期可持续城市重建项目提供在线虚拟现实服务的公司的联合创始人。她开发并维护了一款基于OpenSimulator虚拟世界的搜索引擎。
Cristina获得了美国东北大学的博士学位与葡萄牙技术高等学院(InstitutoSuperiorTécnico)的本科与硕士学位,以及多项美国国家自然科学基金的资助,包括久负盛名的美国自然科学基金杰出青年奖。她是全球唯1同时获得ACM杰出科学家与OhlohKudos9级会员的人。目录
第一部分悠久历史
第1章往日的美好2
1.1约束2
1.2代码3
1.3注解5
1.4系统设计中的应用6
1.5发展历程7
1.6拓展阅读7
1.7词汇表8
1.8练习8
第2章Forth风格9
2.1约束9
2.2代码10
2.3注解12
2.4发展历程14
2.5拓展阅读14
2.6词汇表14
2.7练习15
第二部分基本风格
第3章单片风格18
3.1约束18
3.2代码19
3.3注解20
3.4系统设计中的应用21
3.5拓展阅读22
3.6词汇表22
3.7练习22
第4章食谱风格23
4.1约束23
4.2代码24
4.3注解25
4.4系统设计中的应用26
4.5发展历程27
4.6拓展阅读27
4.7词汇表27
4.8练习28
第5章流水线风格29
5.1约束29
5.2代码30
5.3注解31
5.4系统设计中的应用33
5.5发展历程33
5.6拓展阅读34
5.7词汇表35
5.8练习35
第6章高尔夫风格39
6.1约束36
6.2代码37
6.3注解37
6.4系统设计中的应用38
6.5发展历程39
6.6拓展阅读39
6.7词汇表39
6.8练习39
第三部分函数组合
第7章无限镜像风格42
7.1约束42
7.2代码43
7.3注解44
7.4发展历程44
7.5拓展阅读45
7.6词汇表45
7.7练习45
第8章骨牌风格46
6.1约束46
6.2代码47
6.3注解48
6.4系统设计中的应用48
6.5发展历程49
6.6拓展阅读49
6.7词汇表49
6.8练习50
第9章单子风格51
9.1约束51
9.2代码52
9.3注解53
9.4发展历程54
9.5拓展阅读54
9.6词汇表54
9.7练习55
第四部分
第10章对象风格58
10.1约束58
10.2代码59
10.3注解60
10.4系统设计中的应用62
10.5发展历程63
10.6拓展阅读63
10.7词汇表63
10.8联系64
第11章消息风格65
11.1约束65
11.2代码66
11.3注解68
11.4系统设计中的应用68
11.5发展历程68
11.6拓展阅读69
11.7词汇表69
11.8练习69
第12章闭域风格70
12.1约束70
12.2代码71
12.3注解72
12.4发展历程73
12.5拓展阅读73
12.6词汇表73
12.7练习73
第13章抽象对象风格75
13.1约束75
13.2代码76
13.3注解78
13.4系统设计中的应用80
13.5发展历程80
13.6拓展阅读80
13.7词汇表81
13.8练习81
第14章好莱坞风格82
14.1约束82
14.2代码83
14.3注解85
14.4系统设计中的应用86
14.5发展历程86
14.6拓展阅读86
14.7词汇表87
14.8练习87
第15章公告板风格88
15.1约束88
15.2代码89
15.3注解91
15.4系统设计中的应用92
15.5发展历程92
15.6拓展阅读92
15.7词汇表93
15.8练习93
第五部分
第16章内省风格96
16.1约束96
16.2代码97
16.3注解98
16.4系统设计中的应用98
16.5词汇表98
16.6练习99
第17章反射风格100
17.1约束100
17.2代码101
17.3注解102
17.4系统设计中的应用103
17.5发展历程103
17.6拓展阅读104
17.7词汇表104
17.8练习105
第18章切面风格106
18.1约束106
18.2代码107
18.3注解107
18.4发展历程108
18.5拓展阅读109
18.6词汇表109
18.7练习109
第19章插件风格111
19.1约束111
19.2代码112
19.3注解113
19.4系统设计中的应用114
19.5发展历程115
19.6拓展阅读115
19.7词汇表116
19.8练习116
第六部分异常处理
第20章构建风格118
20.1约束118
20.2代码119
20.3注解120
20.4系统设计中的应用121
20.5练习121
第21章Tantrum风格122
21.1约束122
21.2代码123
21.3注解124
21.4发展历程125
21.5拓展阅读125
21.6词汇表125
21.7练习125
第22章消极攻击风格126
22.1约束126
22.2代码127
22.3注解128
22.4发展历程128
22.5拓展阅读128
22.6词汇表129
22.7练习129
22.8构建风格VS.TantrumVS.消极攻击风格130
第23章声明意图风格131
23.1约束131
23.2代码132
23.3注解133
23.4发展历程134
23.5拓展阅读135
23.6词汇表135
23.7练习136
第24章隔离风格137
24.1约束137
24.2代码138
24.3注解139
24.4系统设计中的应用142
24.5发展历程143
24.6拓展阅读143
24.7词汇表143
24.8练习143
第七部分以数据为中心
第25章持久表风格143
25.1约束146
25.2代码147
25.3注解148
25.4系统设计中的应用149
25.5发展历程149
25.6拓展阅读150
25.7词汇表150
25.8练习150
第26章试算表风格151
26.1约束151
26.2代码152
26.3注解153
26.4系统设计中的应用153
26.5发展历程154
26.6拓展阅读154
26.7词汇表154
26.8练习154
第27章漂流风格155
27.1约束155
27.2代码156
27.3注解157
27.4系统设计中的应用158
27.5发展历程158
27.6拓展阅读158
27.7词汇表159
27.8练习159
第八部分并发
第28章参与者风格162
28.1约束162
28.2代码163
28.3注解165
28.4系统设计中的应用167
28.5发展历程167
28.6拓展阅读167
28.7词汇表167
28.8练习168
第29章数据空间风格169
29.1约束169
29.2代码170
29.3注解171
29.4系统设计中的应用171
29.5发展历程171
29.6拓展阅读172
29.7词汇表172
29.8练习172
第30章MapReduce风格173
30.1约束173
30.2代码174
30.3注解175
30.4系统设计中的应用176
30.5发展历程177
30.6拓展阅读177
30.7词汇表177
30.8练习177
第31章双重MapReduce风格179
31.1约束179
31.2代码180
31.3注解181
31.4系统设计中的应用182
31.5发展历程182
31.6拓展阅读183
31.7练习183
第九部分交互
第32章三层架构风格186
32.1约束186
32.2代码187
32.3注解188
32.4系统设计中的应用191
32.5发展历程191
32.6拓展阅读191
32.7词汇表191
32.8练习191
第33章RESTful风格193
33.1约束193
33.2代码194
33.3注解196
33.4系统设计中的应用199
33.5发展历程199
33.6拓展阅读199
33.7词汇表200
33.8练习200精彩书摘
《编程风格:好代码的逻辑》:
对于上一章中所述的对象的概念,消息风格采朋了不同视角,但程序的划分方法与上一章相同。对象向外界公开一个过程(接收消息的过程)而并非一系列过程。数据和过程被隐藏在内部。一些能够被对象解释的消息,将通过过程执行的方式处理;一些无法被对象解释的消息,则被忽略或生成某种形式的错误;另一些消息可能并不由该对象直接处理,而由其他与接收对象相关的对象处理。
示例程序中的解决方案使用了和上一章一致的实体,但没有公开方法。取而代之,所有的类都只公开了一个接收消息的方法,即dispatch(第8~14行,第31~37行,第51~57行,第70~76行)。消息由一个能识别该消息的标签以及传递给内部过程的参数(或无参数)组成。根据不同的标签,内部过程可能被调用,也可能会抛出Messagenotunderstood异常。对象之间通过发送消息进行交瓦。
……