C语言重构 · 遗留系统现代化

📚 共计 30 章节
01
C语言遗产的现状与挑战
为什么需要重构?遗留系统的典型特征、重构 vs 重写的决策模型。
决策遗产分析
02
代码坏味道识别
过长函数、过大的类、重复代码、过长参数列表、全局变量滥用。
坏味道诊断
03
重构基础工具链
Git版本控制、CUnit/Check单元测试框架、Valgrind内存检测、GCC静态分析。
工具链测试
04
安全重构的第一步
构建测试防护网、测试金字塔在C语言中的应用、编写可测试的C代码。
安全防护网
05
函数级别的重构
提取函数、内联函数、引入参数对象、分解条件表达式。
函数简化
06
数据结构的现代化
从裸结构体到封装、引入不透明指针、使用柔性数组成员。
封装柔性数组
07
内存管理的重构
从malloc/free到RAII模式、引入智能指针(C语言实现)、内存池技术。
RAII内存池
08
错误处理的进化
从errno到返回码枚举、引入断言、使用setjmp/longjmp实现异常模拟。
错误处理断言
09
宏定义的清理
常量宏替换为枚举、函数宏替换为内联函数、条件编译的合理使用。
内联
10
全局变量的治理
单例模式替代全局变量、上下文结构体传递、依赖注入入门。
全局变量依赖注入
11
模块化与解耦
头文件设计原则、接口与实现分离、模块间依赖管理。
模块化解耦
12
配置管理的重构
从硬编码到配置文件、使用libconfig/json-c、运行时配置热加载。
配置热加载
13
日志系统的现代化
从printf到分级日志、引入log4c、日志性能优化。
日志log4c
14
字符串处理的重构
从strcpy到strncpy_s、使用动态字符串库(sds)、Unicode支持。
字符串sds
15
并发编程的现代化
从pthread到C11原子操作、线程安全的数据结构、无锁编程入门。
并发原子操作
16
I/O操作的重构
从阻塞I/O到非阻塞I/O、引入libevent/libuv、异步编程模式。
I/Olibuv
17
网络通信的现代化
从裸socket到封装、使用libcurl进行HTTP通信、协议缓冲区设计。
网络libcurl
18
数据库访问的重构
从直接调用到抽象层、连接池实现、ORM模式在C语言中的尝试。
数据库连接池
19
算法与数据结构的现代化
从手写链表到标准库、引入uthash/utlist、算法复杂度优化。
uthash算法
20
编译系统的重构
从Makefile到CMake、依赖管理、增量编译优化。
CMake编译
21
持续集成与自动化
CI/CD流水线搭建、自动化测试集成、代码质量门禁。
CI/CD质量门禁
22
文档与注释的重构
从无文档到Doxygen、代码即文档理念、API文档自动化。
Doxygen文档
23
遗留接口的封装
外观模式应用、适配器模式、版本兼容性处理。
适配器外观
24
性能优化的重构
性能分析工具(gprof/perf)、热点代码优化、缓存友好设计。
性能gprof
25
安全加固
缓冲区溢出防护、输入验证、安全编码规范(CERT C)。
安全CERT C
26
跨平台移植
条件编译的清理、平台抽象层、使用CMake管理多平台。
跨平台抽象层
27
大型重构策略
分阶段重构、特性分支 vs 主干开发、重构与业务开发并行。
策略分支
28
重构的度量与验证
代码复杂度度量、测试覆盖率、性能基准测试。
度量覆盖率
29
团队协作与文化
代码评审、重构的文化阻力、渐进式改进。
团队文化
30
案例实战
一个完整的遗留C项目现代化改造全过程。
实战完整案例