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

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

2023年02月出版新書

『簡體書』代码结构

書城自編碼: 2875879
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: 魏家明
國際書號(ISBN): 9787121296031
出版社: 电子工业出版社
出版日期: 2016-08-01
版次: 1
頁數/字數: 280/
書度/開本: 16开 釘裝: 平塑

售價:NT$ 368

我要買

share:

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



新書推薦:
北洋大学与近代中国(第2辑)
《 北洋大学与近代中国(第2辑) 》

售價:NT$ 717.0
汗青堂丛书048·科举史(新)
《 汗青堂丛书048·科举史(新) 》

售價:NT$ 370.0
新形势下海事综合风险管控理论与实践
《 新形势下海事综合风险管控理论与实践 》

售價:NT$ 448.0
数码港元:Web3.0构建香港新金融
《 数码港元:Web3.0构建香港新金融 》

售價:NT$ 420.0
邓正来著作集(全9册)
《 邓正来著作集(全9册) 》

售價:NT$ 8893.0
努斯:希腊罗马哲学研究(第6辑)--逻辑、同异与辩证法
《 努斯:希腊罗马哲学研究(第6辑)--逻辑、同异与辩证法 》

售價:NT$ 381.0
碳交易与碳金融基础(彭玉镏)
《 碳交易与碳金融基础(彭玉镏) 》

售價:NT$ 269.0
当下的骰子--福柯的光与影
《 当下的骰子--福柯的光与影 》

售價:NT$ 493.0

編輯推薦:
本书用程序员特有的通俗易懂的语言对如何优化代码结构做了深入的探讨,是相关领域程序员修炼代码必读宝典。
內容簡介:
本书对如何优化代码结构做了深入的探讨,分为五个部分:编程问题与原则、编程格式与风格、如何让代码更容易读、如何做代码重构和C语言的一些要素。本书对这些部分做了重点探讨:代码中存在的各种问题,编程时要遵循的原则,编程时要注重格式、注释和名字,如何让表达式和控制流简单易读,如何消除代码中的重复冗余,如何切分代码和少写代码等。另外,本书还探讨了C语言设计中的一些要素和常见问题。
關於作者:
魏家明,资深软件开发工程师、硬件工程师,著有《Verilog编程艺术》一书。具有多年的Verilog设计经验,参与了多个芯片的设计工作,重点在前端设计(设计、验证、综合、和STA等)。
目錄
第一部分 编程问题与原则
第1章 美的设计2
1.1 美学观点2
1.2 代码可读2
1.3 适用范围3
第2章 代码质量4
2.1 外在特性4
2.2 内在特性4
2.3 一个故事5
2.4 提升质量5
第3章 代码问题7
3.1 最混乱的7
3.2 命名混乱8
3.3 名实不副8
3.4 格式混乱9
3.5 注释混乱9
3.6 重复冗余9
3.7 臃肿庞大9
3.8 晦涩难懂10
3.9 过度耦合10
3.10 滥用变量10
3.11 嵌套太深10
3.12 代码混杂10
3.13 不确定性11
3.14 太多警告11
3.15 鸡同鸭讲11
3.16 过度设计11
3.17 基础不好11
3.18 陈旧腐败12
3.19 停滞不前12
3.20 不可扩充12
3.21 最后总结12
第4章 人员问题13
4.1 思维定势13
4.2 思维顽固14
4.3 小中见大14
4.4 懒虫心理14
4.5 粗枝大叶15
4.6 巧合编程15
4.7 应付差事15
4.8 固步自封15
4.9 疲惫不堪15
4.10 环境混乱16
4.11 管理失职16
4.12 个人性格16
第5章 编程原则17
5.1 高内聚低耦合17
5.2 设计模式18
5.3 编码风格19
5.4 干干净净19
第6章 编程之道21
6.1 注重质量21
6.2 遵守规则22
6.3 简洁编程22
6.4 整洁编程23
6.5 快乐编程24
6.6 团队协作25
6.7 测试驱动25
6.8 考虑全局25
6.9 代码切分26
6.10 代码重构26
6.11 深入学习27
6.12 寻求诗意27
6.13 程序员节28
第二部分 编程格式与风格
第7章 使用Emacs30
7.1 Emacs介绍30
7.2 Emacs安装31
7.3 常用快捷键31
7.4 笔者的“.emacs”32
7.5 cua-mode33
7.6 shell buffer34
第8章 快速排序35
8.1 算法简介35
8.2 CC++语言35
8.3 Java36
8.4 Perl36
8.5 Verilog37
第9章 格式优美39
9.1 合理安排39
9.2 横向缩进40
9.3 纵向对齐43
9.4 顺序书写44
9.5 分组成块45
9.6 添加空白46
9.7 书写语句47
9.8 书写表达式47
9.9 Verilog部分48
9.10 保持一致49
9.11 代码例子50
第10章 注释合理52
10.1 无用的注释52
10.2 有用的注释58
10.3 如何写注释62
第11章 名字定义65
11.1 命名方法65
11.2 命名67
11.3 命名规则73
11.4 名字使用77
11.5 SPEC定义77
第三部分 让代码更容易读
第12章 消除警告84
12.1 不可忽视84
12.2 警告类型86
12.3 打开警告87
第13章 精心用变量89
13.1 修改变量的名字89
13.2 进行变量初始化90
13.3 减少变量的个数91
13.4 缩小变量作用域92
13.5 减少变量的操作95
第14章 表达式易读96
14.1 糟糕的表达式96
14.2 使用中间变量96
14.3 使用等价逻辑98
14.4 简化判断逻辑98
14.5 使用宏定义99
14.6 使用查找表99
14.7 注意操作符101
14.8 简洁的写法102
第15章 控制流易读104
15.1 组织直线型代码104
15.2 判断中的表达式105
15.3 判断中的注意事项105
15.4 判断中的参数顺序106
15.5 判断中的赋值语句106
15.6 if语句的逻辑顺序107
15.7 使用“?:”108
15.8 使用switch108
15.9 使用return109
15.10 选择forwhile109
15.11 少用dowhile110
15.12 少用goto112
15.13 语句对比113
15.14 减少嵌套114
15.15 减少代码117
第16章 设计好函数119
16.1 不好的函数119
16.2 好的函数119
16.3 小的函数120
16.4 递归调用121
第四部分 如何做代码重构
第17章 代码重构124
17.1 为什么重构124
17.2 重构的好处124
17.3 重构的难题125
17.4 实际的例子125
第18章 消除重复128
18.1 代码重复的产生128
18.2 代码重复的后果128
18.3 代码重复的解决129
18.4 消除重复的例子129
第19章 代码切分133
19.1 抽取独立的代码133
19.2 设计通用的代码135
19.3 简化已有的接口137
19.4 一次只做一件事138
19.5 让函数功能单一142
19.6 删除无用的代码144
第20章 少写代码145
20.1 合适就刚刚好145
20.2 保持代码简洁145
20.3 使用循环解决146
20.4 熟悉语言特性147
20.5 熟悉库函数147
20.6 熟悉系统工具149
第21章 简化代码150
21.1 重新设计代码150
21.2 寻找更好算法152
第22章 代码生成155
22.1 配置Linux的内核155
22.2 生成寄存器的代码156
22.3 生成Benes的代码157
第23章 代码测试161
23.1 测试中问题161
23.2 测试的原则162
23.3 设计要更好162
23.4 提高可读性162
23.5 测试智能化164
23.6 定位Bug167
第五部分 C语言一些要素
第24章 关键字170
第25章 类型172
25.1 内部数据类型172
25.2 新增数据类型173
25.3 enum173
25.4 struct174
25.5 union175
25.6 typedef175
25.7 复杂的数据类型177
25.8 Endian问题177
第26章 变量179
26.1 声明和定义179
26.2 变量分类179
26.3 const变量183
26.4 volatile变量185
26.5 混合声明187
第27章 常量188
27.1 常量类型188
27.2 常量定义189
27.3 常量区分189
27.4 其他问题189
第28章 操作190
28.1 操作符表格190
28.2 操作符解释192
28.3 强制进行类型转换199
28.4 运算时的类型转换199
28.5 赋值时的类型转换203
第29章 数组206
29.1 数组的说明206
29.2 初始化206
29.3 字符串207
29.4 复合常量赋值208
29.5 函数中的变长数组208
29.6 结构中的灵活数组209
29.7 数组作为函数参数209
29.8 数组和指针210
第30章 指针212
30.1 指针的说明212
30.2 啰嗦的指针213
30.3 void *214
30.4 restrict215
30.5 多级指针216
30.6 数组指针和指针数组217
30.7 函数指针和指针函数219
30.8 malloc222
30.9 alloca223
30.10 指针使用中的问题223
第31章 语句225
31.1 if225
31.2 switch225
31.3 for和while226
31.4 do {...} while226
31.5 break227
31.6 return228
31.7 goto228
31.8 exit229
31.9 复合语句229
30.10 空语句229
第32章 函数231
32.1 void231
32.2 static231
32.3 inline231
32.4 函数原型232
32.5 参数可变233
32.6 其他讨论234
第33章 库函数235
33.1 使用getopt235
33.2 使用qsort236
33.3 文件模式问题236
33.4 返回值的问题238
33.5 控制字符问题238
33.6 缓冲区问题239
33.7 可重入问题240
第34章 预处理242
34.1 文件包含242
34.2 宏定义244
34.3 条件编译248
34.4 其他命令249
34.5 预处理输出249
第35章 错误处理250
35.1 错误检查和处理250
35.2 封装函数250
35.3 使用断言251
第36章 内存映像254
36.1 程序编译后的section254
36.2 程序运行时的内存空间255
36.3 简单的malloc.c255
第37章 汇编语言258
37.1 如非必要258
37.2 熟悉ABI259
37.3 汇编例子259
第38章 GCC特色261
38.1 MinGW261
38.2 执行过程262
38.3 内嵌汇编262
38.4 __attribute__264
参考文献266
內容試閱
序言
通过编程语言可以设计两种系统:软件系统和硬件系统。例如,使用C语言设计操作系统和应用软件,使用Verilog设计ASIC芯片和FPGA应用。
系统的生命周期包含两个阶段:开发期和运营期。在开发期,公司投入大量的人力和物力用于开发系统,所以总是希望系统能发挥最大的能力;在运营期,为了尽可能地延长系统的运营时间,就需要投入大量的工作进行系统维护。
系统维护一般包括三大类:一是纠正性维护,用来修改系统中存在的错误和缺陷;二是适应性维护,为了让系统适应不断变化的环境,需要对系统进行修改和扩充;三是完善性维护,为了让系统提升性能、扩大功能、拓展应用范围,需要对系统进行扩充和移植。
在这三大类的系统维护工作中,第二类和第三类维护所占的份额最大,约占总维护工作的80%左右。所以,系统的可维护性是首要考虑的问题,系统的运营过程就是维护系统生命价值的过程。根据调查表明,系统维护成本已占到系统生命周期成本的70%以上。这表明系统维护的难度越来越大,已成为目前系统开发所面临的最大问题。
影响系统维护的方面有很多:系统架构设计不合理、不灵活,难以修改和扩充,编写代码时不注意代码的内在质量,代码可读性和可理解性差,缺乏相关的文档资料,代码和文档不相符合,员工频繁离职导致工作脱节等。
随着系统开发越来越复杂,就需要采取科学的管理方法和优秀的设计技术,严格把控系统设计的质量,使得系统设计按照有条不紊的方式进行,提高代码编写的生产率,提高代码的可靠性、可读性、可理解性和可维护性,从而降低系统开发和维护的成本。
为了设计易于维护的系统,就要设计出通用、灵活、易于维护的系统架构,系统设计模块化,模块高内聚低耦合,遵守编码风格,优化代码结构,提高代码设计的质量,保证代码的可读性、可理解性、可测试性、可维护性、可移植性等内在特性,从而降低系统的维护难度,延长系统运营的生命周期。
作者根据上面这些开发和维护的需求,对实际代码设计进行分析总结,同时阅读多位编程大师的书籍,查找大量的资料,从而完成了本书的编写。作者在本书中讨论了这些内容:代码中存在的各种问题,编程时要遵循的原则,编程时要注重格式、注释和名字,如何让表达式和控制流简单易读,如何消除重复冗余的代码,如何切分代码和少写代码,C语言的一些要素等。
读者通过阅读本书,可以规范代码设计,提高设计能力,优化代码结构,提高代码的可读性,从而提高代码的各种特性。
GigaDevice Semiconductor Beijing Inc.
北京兆易创新科技股份有限公司
副总经理 曹堪宇博士
2016年5月12日
前言
这是一本向编程大师致敬的书,也是一本对代码设计思考的书,还是一本对实际代码设计有帮助的书。
Martin Fowler said:Any fool can write code that a computer can understand. Good programmers write code that humans can understand。
有些人花了很大的精力编写代码,但只是满足于代码能工作就行,从未想过让代码有好的结构和可读性,也就不会花费精力调整代码,从而导致代码很糟糕。其实,没什么比糟糕的代码更差劲的了,因为糟糕的代码只会降低代码的可读性,只会拖团队的后腿,只会让系统的成本增加。
系统的成本在于长期维护的成本,这是因为为了尽量降低维护时出现缺陷和错误,就有必要透彻地理解系统在干什么。当系统变得越来越复杂,设计人员就需要花费越来越多的时间来理解系统,但还是可能会有很多的困惑和误解,而代码中存在的各种各样的问题还会加剧设计人员对代码的困惑和误解。
代码设计中存在很多问题,例如命名混乱、名实不副、格式混乱、注释混乱、重复冗余、臃肿庞大、晦涩难懂、过度耦合、滥用变量、嵌套太深、代码混杂、太多警告、过度设计、陈旧腐败等,这些都是在代码结构设计上出了问题,这些问题就像死气沉沉的沼泽一样,让设计人员痛苦不堪,艰难地跋涉。
代码设计中存在的各种问题,会影响代码的设计质量,影响代码的灵活性、可读性、可理解性、可维护性、可测试性、可移植性、可重用性等,还会影响设计人员的干劲与活力,甚至影响设计人员间的协作精神。
所以代码设计应该具有良好的代码结构,具有良好的可读性和表达力,能够清晰地表达设计者的意图,同时也是对工作的负责,对团队的尊敬。设计人员在理解代码时花费的时间越少,就越能减少设计缺陷和错误,越能减少维护成本,同时设计者本人也会赢得其他人员的尊敬。
本书针对如何优化代码结构,通过以下5个部分进行讨论。
1)编程问题与原则:本部分讨论代码质量、代码问题、人员问题、编程原则和编程之道,因为只有清楚了存在的问题,掌握了编程原则,才有可能写出更好的代码。
2)编程格式与风格:本部分讨论格式优美、注释合理、名字定义等方面,还介绍Emacs的使用,这些方面对设计人员非常重要。
3)让代码更容易读:本部分讨论如何让编写出的代码更容易阅读,包括消除警告、精心用变量、表达式易读、控制流易读、设计好函数。
4)如何做代码重构:本部分讨论代码重构的好处和方法,包括消除重复、代码切分、少写代码、简化代码,还讨论代码生成、代码测试。
5)C语言一些要素:本部分讨论C语言的一些要素,讨论一些容易混淆和出错的地方,还讨论C语言的一些好用法。
如果你没有优化代码结构的意愿,那么说再多也没用,当你看见自己混乱的代码时,你也不会感到害臊;当你看见别人优美的代码时,你也不会有任何感觉。
如果你有优化代码结构的意愿,就要注重编码格式、名字定义、代码易读、消除冗余、代码重构等方面的学习,并积极实践这些方法,从一点一滴做起,最后就会获得很好的代码结构。
本书举例主要以C语言为主,但也会有Verilog和Perl的例子。有些人觉得它们是三种完全不同应用的语言,竟然在一本书里描述,可能觉得不可接受,但是代码设计都有共性,都需要注意代码结构,关键在于灵活掌握这些设计原则,那么对任何编程语言你都会游刃有余。
衷心地感谢曹堪宇博士,他在百忙之中为本书题写了序言,他带领我们做系统设计的时候,我深深地被他的精益求精的精神所打动。
衷心地感谢我的朋友燕雪松、张茜歌等人帮我审稿,帮我在书中找到好多的缺陷和错误。
衷心地感谢网上的朋友们,因为我采用了很多的网上资料,感谢你们的无私奉献。
衷心地感谢电子工业出版社的支持,正是由于策划编辑牛平月的密切联系和各位编辑的认真工作,才使得本书得以顺利地与读者见面。
如果您在本书中发现有缺陷或者错误的地方,或者您对本书存有模糊或者疑惑的地方,请通过QQ或者邮件与我联系,我的QQ号码是943609120,您的任何反馈都是令人欢迎的。我还建立了一个名为代码结构的QQ群,群号码是482433665,欢迎大家加入,共同探讨各种与代码设计有关的各种问题。

魏家明
2016年6月30日

 

 

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