为你推荐
内容简介
序言
前言
第一部分 编程问题与原则
第1章 美的设计
1.1 美学观点
1.2 代码可读
1.3 适用范围
第2章 代码质量
2.1 外在特性
2.2 内在特性
2.3 一个故事
2.4 提升质量
第3章 代码问题
3.1 最混乱的
3.2 命名混乱
3.3 名实不副
3.4 格式混乱
3.5 注释混乱
3.6 重复冗余
3.7 臃肿庞大
3.8 晦涩难懂
3.9 过度耦合
3.10 滥用变量
3.11 嵌套太深
3.12 代码混杂
3.13 不确定性
3.14 太多警告
3.15 鸡同鸭讲
3.16 过度设计
3.17 基础不好
3.18 陈旧腐败
3.19 停滞不前
3.20 不可扩充
3.21 最后总结
第4章 人员问题
4.1 思维定势
4.2 思维顽固
4.3 小中见大
4.4 懒虫心理
4.5 粗枝大叶
4.6 巧合编程
4.7 应付差事
4.8 固步自封
4.9 疲惫不堪
4.10 环境混乱
4.11 管理失职
4.12 个人性格
第5章 编程原则
5.1 高内聚低耦合
5.2 设计模式
5.3 编码风格
5.4 干干净净
第6章 编程之道
6.1 注重质量
6.2 遵守规则
6.3 简洁编程
6.4 整洁编程
6.5 快乐编程
6.6 团队协作
6.7 测试驱动
6.8 考虑全局
6.9 代码切分
6.10 代码重构
6.11 深入学习
6.12 寻求诗意
6.13 程序员节
第二部分 编程格式与风格
第7章 使用Emacs
7.1 Emacs介绍
7.2 Emacs安装
7.3 常用快捷键
7.4 笔者的“.emacs”
7.5 cua-mode
7.6 shell buffer
第8章 快速排序
8.1 算法简介
8.2 C/C++语言
8.3 Java
8.4 Perl
8.5 Verilog
第9章 格式优美
9.1 合理安排
9.2 横向缩进
9.3 纵向对齐
9.4 顺序书写
9.5 分组成块
9.6 添加空白
9.7 书写语句
9.8 书写表达式
9.9 Verilog部分
9.10 保持一致
9.11 代码例子
第10章 注释合理
10.1 无用的注释
10.2 有用的注释
10.3 如何写注释
第11章 名字定义
11.1 命名方法
11.2 命名
11.3 命名规则
11.4 名字使用
11.5 SPEC定义
第三部分 让代码更容易读
第12章 消除警告
12.1 不可忽视
12.2 警告类型
12.3 打开警告
第13章 精心用变量
13.1 修改变量的名字
13.2 进行变量初始化
13.3 减少变量的个数
13.4 缩小变量作用域
13.5 减少变量的操作
第14章 表达式易读
14.1 糟糕的表达式
14.2 使用中间变量
14.3 使用等价逻辑
14.4 简化判断逻辑
14.5 使用宏定义
14.6 使用查找表
14.7 注意操作符
14.8 简洁的写法
第15章 控制流易读
15.1 组织直线型代码
15.2 判断中的表达式
15.3 判断中的注意事项
15.4 判断中的参数顺序
15.5 判断中的赋值语句
15.6 if语句的逻辑顺序
15.7 使用“?:”
15.8 使用switch
15.9 使用return
15.10 选择for/while
15.11 少用do/while
15.12 少用goto
15.13 语句对比
15.14 减少嵌套
15.15 减少代码
第16章 设计好函数
16.1 不好的函数
16.2 好的函数
16.3 小的函数
16.4 递归调用
第四部分 如何做代码重构
第17章 代码重构
17.1 为什么重构
17.2 重构的好处
17.3 重构的难题
17.4 实际的例子
第18章 消除重复
18.1 代码重复的产生
18.2 代码重复的后果
18.3 代码重复的解决
18.4 消除重复的例子
第19章 代码切分
19.1 抽取独立的代码
19.2 设计通用的代码
19.3 简化已有的接口
19.4 一次只做一件事
19.5 让函数功能单一
19.6 删除无用的代码
第20章 少写代码
20.1 合适就刚刚好
20.2 保持代码简洁
20.3 使用循环解决
20.4 熟悉语言特性
20.5 熟悉库函数
20.6 熟悉系统工具
第21章 简化代码
21.1 重新设计代码
21.2 寻找更好算法
第22章 代码生成
22.1 配置Linux的内核
22.2 生成寄存器的代码
22.3 生成Benes的代码
第23章 代码测试
23.1 测试中问题
23.2 测试的原则
23.3 设计要更好
23.4 提高可读性
23.5 测试智能化
23.6 定位Bug
第五部分 C语言一些要素
第24章 关键字
第25章 类型
25.1 内部数据类型
25.2 新增数据类型
25.3 enum
25.4 struct
25.5 union
25.6 typedef
25.7 复杂的数据类型
25.8 Endian问题
第26章 变量
26.1 声明和定义
26.2 变量分类
26.3 const变量
26.4 volatile变量
26.5 混合声明
第27章 常量
27.1 常量类型
27.2 常量定义
27.3 常量区分
27.4 其他问题
第28章 操作
28.1 操作符表格
28.2 操作符解释
28.3 强制进行类型转换
28.4 运算时的类型转换
28.5 赋值时的类型转换
第29章 数组
29.1 数组的说明
29.2 初始化
29.3 字符串
29.4 复合常量赋值
29.5 函数中的变长数组
29.6 结构中的灵活数组
29.7 数组作为函数参数
29.8 数组和指针
第30章 指针
30.1 指针的说明
30.2 啰嗦的指针
30.3 void*
30.4 restrict
30.5 多级指针
30.6 数组指针和指针数组
30.7 函数指针和指针函数
30.8 malloc
30.9 alloca
30.10 指针使用中的问题
第31章 语句
31.1 if
31.2 switch
31.3 for和while
31.4 do{...}while
31.5 break
31.6 return
31.7 goto
31.8 exit()
31.9 复合语句
30.10 空语句
第32章 函数
32.1 void
32.2 static
32.3 inline
32.4 函数原型
32.5 参数可变
32.6 其他讨论
第33章 库函数
33.1 使用getopt()
33.2 使用qsort()
33.3 文件模式问题
33.4 返回值的问题
33.5 控制字符问题
33.6 缓冲区问题
33.7 可重入问题
第34章 预处理
34.1 文件包含
34.2 宏定义
34.3 条件编译
34.4 其他命令
34.5 预处理输出
第35章 错误处理
35.1 错误检查和处理
35.2 封装函数
35.3 使用断言
第36章 内存映像
36.1 程序编译后的section
36.2 程序运行时的内存空间
36.3 简单的malloc.c
第37章 汇编语言
37.1 如非必要
37.2 熟悉ABI
37.3 汇编例子
第38章 GCC特色
38.1 MinGW
38.2 执行过程
38.3 内嵌汇编
38.4 __attribute__
参考文献
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜