登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年11月出版新書

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

『簡體書』代码阅读(权威精选植根于开发实践的最佳读物)

書城自編碼: 1948152
分類: 簡體書→大陸圖書→計算機/網絡软件工程/开发项目管理
作者: Diomidis
國際書號(ISBN): 9787121174810
出版社: 电子工业出版社
出版日期: 2012-08-01
版次: 1 印次: 1
頁數/字數: 416/
書度/開本: 16开 釘裝: 平装

售價:NT$ 751

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
不同境遇的36岁:无尽与有限+人生半熟
《 不同境遇的36岁:无尽与有限+人生半熟 》

售價:NT$ 510.0
小时光 油画棒慢绘零基础教程
《 小时光 油画棒慢绘零基础教程 》

售價:NT$ 403.0
可控性混乱
《 可控性混乱 》

售價:NT$ 301.0
篡魏:司马懿和他的夺权同盟
《 篡魏:司马懿和他的夺权同盟 》

售價:NT$ 296.0
狂飙年代:18世纪俄国的新文化和旧文化(第三卷)
《 狂飙年代:18世纪俄国的新文化和旧文化(第三卷) 》

售價:NT$ 806.0
协和专家大医说:医话肿瘤
《 协和专家大医说:医话肿瘤 》

售價:NT$ 500.0
潜水指南 全彩图解第4版
《 潜水指南 全彩图解第4版 》

售價:NT$ 602.0
超大规模集成电路设计——从工具到实例
《 超大规模集成电路设计——从工具到实例 》

售價:NT$ 403.0

建議一齊購買:

+

NT$ 573
《 重构 改善既有代码的设计 》
+

NT$ 828
《 面向模式的软件架构,卷2:并发和联网对象模式 》
+

NT$ 828
《 C++ API设计【软件API设计经典著作,Pixar动画系统首席工程师悉心讲解,软件工程效率之源】 》
+

NT$ 941
《 面向对象分析与设计(第3版)(权威精选植根于开发实践的最佳读物) 》
+

NT$ 846
《 代码质量(权威精选植根于开发实践的最佳读物)(预计主发时间:2012年9月15日) 》
+

NT$ 561
《 灾难拯救——让软件项目重回轨道 》
編輯推薦:
一项技术产品只有在获得了Jolt奖之后才能真正成为行业的主流,一本技术图书只有在获得了Jolt奖之后才能真正奠定经典的地位。
內容簡介:
Jolt大奖素有“软件业之奥斯卡”的美称,本丛书精选自Jolt历届获奖图书,以植根于开发实践中的独到工程思想与杰出方法论为主要甄选方向。作者使用了超过600个现实的例子来向你展现如何甄别代码的好坏;如何阅读,应当注意什么,以及如何使用这些知识来改进自己的代码。本书在一些现实中的大型实例基础上,论述了代码阅读的策略,并向读者展示了如何将这些代码阅读和代码理解的技艺运用于实践。
目錄
第1章 导论1
1.1 为何以及如何阅读代码2
1.1.1 将代码作为文献2
1.1.2 将代码作为范例5
1.1.3 维护6
1.1.4 演进6
1.1.5 重用8
1.1.6 检查8
1.2 如何阅读本书9
1.2.1 排版约定9
1.2.2 图表11
1.2.3 练习12
1.2.4 辅助材料13
1.2.5 工具13
1.2.6 提纲13
1.2.7 关于“伟大语言”的争论14
进阶阅读15
第2章 基本编程元素17
2.1 一个完整的程序17
2.2 函数和全局变量22
2.3 while循环、条件和块26
2.4 switch语句29
2.5 for循环31
2.6 break和continue语句34
2.7 字符和布尔表达式36
2.8 goto语句39
2.9 局部重构41
2.10 do循环和整数表达式46
2.11 再论控制结构49
进阶阅读55
第3章 高级C数据类型57
3.1 指针57
3.1.1 链式数据结构58
3.1.2 数据结构的动态分配58
3.1.3 引用调用59
3.1.4 数据元素的访问60
3.1.5 数组类型的参数和返回结果61
3.1.6 函数指针63
3.1.7 用做别名的指针65
3.1.8 指针和字符串67
3.1.9 直接内存访问69
3.2 结构体70
3.2.1 组合数据元素70
3.2.2 从函数中返回多个数据元素71
3.2.3 映射数据的组织方式71
3.2.4 以面向对象方式编程73
3.3 联合体75
3.3.1 有效利用内存空间75
3.3.2 实现多态76
3.3.3 不同内部表征的访问77
3.4 动态内存分配79
3.4.1 空闲内存管理81
3.4.2 包含动态分配数组的结构体83
3.5 typedef声明85
进阶阅读87
第4章 C数据结构89
4.1 向量90
4.2 矩阵和表94
4.3 栈98
4.4 队列100
4.5 映射103
4.5.1 散列表106
4.6 集合108
4.7 链表109
4.8 树117
4.9 图122
4.9.1 节点存储122
4.9.2 边的表示124
4.9.3边的存储127
4.9.4 图的属性129
4.9.5 隐含结构129
4.9.6 其他表示方法130
进阶阅读130
第5章 高级控制流程131
5.1 递归131
5.2 异常机制137
5.3 并行性141
5.3.1 硬件和软件的并行性142
5.3.2 控制模型143
5.3.3 线程实现148
5.4 信号151
5.5 非局部跳转154
5.6 宏替换157
进阶阅读162
第6章 应对大型项目163
6.1 设计和实现技术163
6.2 项目的组织165
6.3 编译过程与makefile文件172
6.4 配置179
6.5 版本控制184
6.6 项目专用工具191
6.7 测试196
进阶阅读203
第7章 编码规范和约定205
7.1 文件的名称和组织206
7.2 缩进208
7.3 格式编排210
7.4 命名约定213
7.5 编程实践217
7.6 过程规范219
进阶阅读220
第8章 文档221
8.1 文档类型221
8.2 阅读文档222
8.3 文档中存在的问题234
8.4 其他文档来源236
8.5 常见的开源文档格式239
进阶阅读245
第9章 架构414
9.1 系统结构248
9.1.1 集中式存储库和分布式方法248
9.1.2 数据流架构252
9.1.3 面向对象结构254
9.1.4 分层架构257
9.1.5 层次260
9.1.6 切片261
9.2 控制模型263
9.2.1 事件驱动系统263
9.2.2 系统管理器266
9.2.3 状态转移268
9.3 元素包装270
9.3.1 模块270
9.3.2 命名空间272
9.3.3 对象276
9.3.4 泛型实现287
9.3.5 抽象数据类型292
9.3.6 库292
9.3.7 进程和过滤器296
9.3.8 组件297
9.3.9 数据存储库299
9.4 架构重用301
9.4.1 框架301
9.4.2 代码向导302
9.4.3 设计模式303
9.4.4 领域专有的架构305
进阶阅读308
第10章 代码阅读工具311
10.1 正则表达式312
10.2 用编辑器浏览代码314
10.3 用grep搜索代码317
10.4 找出文件的差异325
10.5 开发自用工具326
10.6 借助编译器阅读代码329
10.7 代码浏览器与美化器333
10.8 运行时工具338
10.9 非软件工具342
可用工具与进阶读物343
第11章 完整示例345
11.1 概况345
11.2 攻克计划347
11.3 代码重用348
11.4 测试与调试354
11.5 文档361
11.6 观察报告362
附录A 源代码致谢人员名单363
附录B 源代码致谢人员名单363
附录C 源代码致谢人员名单363
內容試閱
在分析一个重要的程序时,最好先找出其最重要的部分。在本例中,这些部分是全局变量(图2—2:1)和函数main(图2—3)、getstops(见图2—5:1)以及usage(见图2—5:8)。

整型变量nstops和整型数组tabstops声明为全局变量,它们的作用域在函数体之外。因此,它们对于所分析文件中的所有函数都是可见的。

紧接着的三个函数声明声明了该文件内之后将出现的函数。由于其中的一些函数可能会在其定义之前使用,因此在C/C++程序中,这些声明允许编译器校验传递给函数的参数以及其返回值,并生成相应的正确代码。如果没有给出前置声明,那么C编译器会依据函数第一次被使用的情形来做出关于函数返回值类型和参数的假设;C++编译器将这种情况标记为错误。如果接下来的函数定义与这些假设不相符,那么编译器将给出一条警告或错误信息。然而,若定义于另一个文件中的函数匹配这个错误的声明,则该通过,程序或许能够编译,但是在运行时会失败。

值得注意的是,两个函数被声明为static,而变量没有。这就是说这两个函数仅仅在该文件中可见,而那些变量则有可能对组成该程序的所有文件都可见。因为expand仅由一个文件组成,所以这一差别在本例中并不重要。多数连接器(用来合并编译后的C文件)都十分原始,对所有程序文件都可见的那些变量(即没有被声明为static的变量),可能会与定义于其他文件中的同名变量进行让人吃惊的交互。因此,在审查代码时,最好确保所有只用于单个文件的变量都声明为static。
下面一起来看一下组成expand的函数。想要了解一个函数(或方法)在做什么,可以采用如下策略之一。
根据函数名猜测。
阅读函数开头的注释。
分析该函数是如何被使用的。
阅读函数体内的代码。
查询外部程序文档。

在本例中,可以很肯定地猜出函数usage将展示有关程序用法的信息然后退出;许多命令行程序都有与之具有同样功能和名称的函数。当你分析大量的代码时,你将会逐渐得出变量和函数的名称以及命名规范。这些将会帮助你正确的猜出它们的用途。然而,你应当做好准备,根据代码阅读过程中必然会出现的一些新证据来随时对最初的猜测做出修改。另外,基于猜测修改代码时,应当设计一个流程来验证最初的假设。这一流程可以包括用编译器检查、引入断言或执行恰当的测试用例。

getsopts的角色比较难于理解。这里没有任何注释,函数体中的代码比较复杂,其名称也可以多种方式解读。注意它被用在程序中一个单独的部分(图2—3:3),这可以帮助我们做进一步的分析。使用到getopt的部分在程序中负责处理程序选项(图2—3:2)。因此,可以肯定地(在本例中也是正确地)认为getopt将处理制表位说明选项。在阅读代码时,这种渐进式的理解较为常见;理解了某一部分的代码可以使得其他部分变得容易理解。基于这种渐进式的理解方式,在理解较为困难的代码时,可以采用类似组合拼图游戏时的策略:从容易的部分开始。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.