关于《编程高手箴言》一书

      今天在图书馆看见这本书,被它的第一章《程序点滴》所吸引了,便拿过来读了一个下午。郑渊洁说过这样一句话“一本书不管从哪页看起,5分钟后还不能吸引你,请毫不犹豫地扔掉它。”我的确被第一章所吸引了。

      书的作者是梁肇新,他是豪杰公司的董事长兼首席程序员。既能坐的管理层第一把交椅,又能坐的技术员第一把交椅,必然有一番实力。

      只是书中有一处,第252页中写道:

      “接下来需要关闭所有的垃圾信息,………,在(Visual C++6.0,笔者注)C/C++页中,在Category项中选取"Precompiled Headers",在出现的页面中选取"Not using precompiled headers"。这样就不会在编译时生成一个几MB大的.pch的垃圾文件了,并且也能提高编译的速度。”

      继续往下看:

      “.pch是一个大垃圾文件,有害无益。它可能是微软为了促进大硬盘好卖而故意搞的,可能这是为了证明垄断的好处,促进硬盘行业的繁荣。”

      读到这里,不禁擦了把汗-_-! ...

      《C++ Primer》的作者Lippman在书中写道:“如果头文件过大,或分散的元素太多,程序员可能会不愿意因为包含它而增加编译时间开销。为降低编译时间开销,有些C++实现提供了预编译头文件支持。如果应用程序有很大的头文件,则使用预编译头文件,而不是普通头文件可以大大降低应用程序的编译时间。”

      侯捷也曾说过:“一个应用程序在发展过程中,常需要不断的编译。Windows程序载入的标准.H文件非常巨大但内容不便,编译器浪费在这上面的时间非常多。Precompiled Header就是将.H文件第一次编译后的结果存储起来,第二次再编译时就可以直接从磁盘中取出来用。这种观念在Borland C/C++早已行之,而Microsoft这边则是一直到Visual C++ 1.0才具备。”

      当然本书还是有不少闪光之处的。很欣赏作者关于“为什么Debug模式下编写的程序在Release模式下不能正常运行”的解释,并给出了一段测试用例。这是我以前所不了解的。

      另外:《代码的规范和风格》一章带有很浓厚的个人习惯在其中。我不知道是不是豪杰公司所有程序都以此为标准了。但是有一点不能认同,即关于变量声明的位置。书中强调一定要在每个程序块开始时声明所有的变量,仍然保持C程序的风格。Scott Meyers在《Effective C++》一书中条款32说明了,尽可能延缓变量定义式的出现。例如:

string encrytPassword(const string& password)
{
 string encrypted;
 if(password.length() < MINIMUN_PASSWORD_LENGTH)
 {
 throw logic_error("Password is too short");
 }
 do_something

 return encrypted;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
梁肇新开发技术总结,值得借鉴 这是我在网上能够找到的最清晰的版本,分享给大家 目录: 第1章 程序点滴 1 1.1 程序≠软件 1 1.1.1 商业软件门槛的形成 2 1.1.2 认清自己的发展 4 1.2 高手是怎样练成的 5 1.2.1 高手成长的六个阶段 5 1.2.2 初级程序员和高级程序员的区别 7 1.2.3 程序员是吃青春饭的吗 9 1.3 正确的入门方法 11 1.3.1 规范的格式是入门的基础 13 1.3.2 调试的重要性 17 1.4 开放性思维 18 1.4.1 动态库的重要性 19 1.4.2 程序设计流程 20 1.4.3 保证程序可预测性 21 第2章 认识CPU 23 2.1 8位微处理器回顾 23 2.2 16位微处理器 24 2.2.1 组成结构 24 2.2.2 8086寄存器组成 25 2.2.3 内存的寻址 26 2.2.4 中断处理 27 2.3 32位微处理器 29 2.3.1 寄存器组成 29 2.3.2 保护模式 32 2.3.3 80386的寻址方式 32 2.4 【实例】:在DOS实模式下读取4GB内存代码分析 36 2.4.1 程序的意义 37 2.4.2 程序代码 37 2.4.3 程序原理 41 2.4.4 程序中的一些解释 42 第3章 Windows运行机理 44 3.1 内核分析 44 3.1.1 运行机理 44 3.1.2 LE文件的格式 53 3.1.3 VxD的设计实现 59 3.1.4 【实例】:CPU降温程序代码分析 65 3.2 消息的运行方式 82 3.2.1 认识消息 82 3.2.2 Windows系统中消息的运作方式 84 3.2.3 消息处理过程实例 87 3.3 GDI的结构和组成 89 3.3.1 GDI的组成 89 3.3.2 GDI和DirectDraw的关系 91 3.4 线程的机制 93 3.4.1 线程的工作方式 93 3.4.2 线程与GDI的冲突:死机的主要原因 94 3.4.3 线程的内存泄漏的主要原因 96 3.4.4 进程管理 98 3.4.5 同步机制 100 3.5 PE结构分析 103 3.5.1 PE头标 103 3.5.2 表节 113 3.5.3 PE文件引入 119 3.5.4 PE文件引出 125 3.5.5 PE文件资源 129 第4章 编程语言的运行机理 133 4.1 汇编的原理 133 4.1.1 指令系统 133 4.1.2 汇编与Win API的接口方法 141 4.1.3 【实例】:自定义程序的入口点 145 4.2 高级语言的原理 151 4.2.1 C/C++的原理 151 4.2.2 解释语言的原理 165 4.2.3 【实例】:用C实现简单的BASIC语言环境 165 4.3 C、C++的学习方式 187 4.3.1 从BASIC到C 187 4.3.2 C、汇编、API的关系 187 4.3.3 接口的建立方法 190 4.4 挂钩技术 201 4.4.1 Windows上C的挂钩 201 4.4.2 C++的挂钩技术 213 第5章 代码的规范和风格 220 5.1 环境的设置 220 5.1.1 集成环境的设置 220 5.1.2 TAB值的设置 221 5.1.3 编译环境的设置 222 5.1.4 设置herosoft.dsm宏 224 5.2 变量定义的规范 227 5.2.1 变量的命名规则 227 5.2.2 变量定义的地方规定 228 5.2.3 变量的对齐规定 229 5.3 代码对齐方式、分块、换行的规范 230 5.4 快速的代码整理方法 232 5.5 注释的规范 233 5.6 头文件的规范 236 5.7 建议采用的一些规则 236 5.8 可灵活运用的一些规则 238 5.9 标准化代码示例 239 5.10 成对编码规则 243 5.10.1 成对编码的实现方法 243 5.10.2 成对编码中的几点问题 248 5.11 正确的成对编码的工程编程方法 251 5.11.1 编码前的工作 252 5.11.2 成对编码的工程方法 255 5.11.3 两个问题的解释 260 第6章 分析方法 266 6.1 分析概要 266 6.1.1 分析案例一:软件硬盘阵列 268 6.1.2 分析案例之二:游戏内存修改工具 274 6.2 接口的提炼 286 6.2.1 分离接口 286 6.2.2 参数分析 287 6.3 主干和分支 290 6.3.1 主干和分支分析举例 291 6.3.2 程序检?? 300 6.4 是否对象化 301 6.5 是否DLL化 307 6.5.1 DLL的建立和调用 307 6.5.2 DLL动态与静态加载的比较
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值