c++之美
Don’t hurt yourself 减少函数参数 函数参数过多,是复杂度失控的信号。 当一个函数不断需要增加参数时,不要急着继续加参数,而应先检查: 函数是否承担了过多职责,需要拆分; 多个参数是否属于同一个概念,可以封装成结构体/参数对象; 不同使用场景是否应该用不同函数、重载或模板表达; 只有以上方式都不合适时,才考虑增加新参数。 最终目标是: ...
Don’t hurt yourself 减少函数参数 函数参数过多,是复杂度失控的信号。 当一个函数不断需要增加参数时,不要急着继续加参数,而应先检查: 函数是否承担了过多职责,需要拆分; 多个参数是否属于同一个概念,可以封装成结构体/参数对象; 不同使用场景是否应该用不同函数、重载或模板表达; 只有以上方式都不合适时,才考虑增加新参数。 最终目标是: ...
目标文件 目标文件的格式 ELF 文件类型 说明 实例 可重定位文件(ET_REL) 包含待链接的代码、数据和重定位信息 Linux 的 .o 可执行文件(ET_EXEC) 可装载执行的文件类型 非 PIE 的 ELF 可执行程序 共享目标文件(ET_DYN) 用于共享库,也用于 PIE 可执行程序;能否直接运行取决于文件用途和装载要求 .so、PIE 可执行程序 核心转储文件(ET_CORE) 记录进程崩溃时的内存与执行状态 core 文件 静态库 .a 通常是多个目标文件组成的归档,不是单个 ET_REL 文件。Windows 的 .obj、.exe、.dll 仅可作用途类比,通常采用 COFF/PE 格式,不属于 ELF。 ...
复杂性的本质 复杂性的定义 复杂性是指与软件系统结构有关的,使人难以理解和修改系统的所有因素。 难以理解代码怎么工作 (理解) 难以在修bug时避免引入其他bug (修改) 从成本的角度上看,复杂系统小的修改需要耗费大量人力物力,而简单的系统,只需要较少的精力就能实现较大的改进 ...