《程序员修炼之道》读书笔记(3):基本工具

第3章:基本工具

工具放大你的才干。

本章讨论的工具包括:

  • 使用纯文本存储数据
  • 使用shell进行自动化
  • 编辑器
  • 源码控制
  • 调试
  • 操纵文本
  • 代码生成器

14《纯文本的威力》

纯文本,又称“可读文本”,与之相对的是二进制格式

“纯文本”相对而言的两个主要缺点:

  • 存储空间更大
  • 解析代价更高

“纯文本”的威力:

  • 保证不过时
  • 易于版本管理(方便查看历史的修改)
  • 易于操控

15《shell游戏》

shell,在Windows上相当于”命令行“,与之相对的是”图形界面(GUI)“。

GUI使用简单:

  • 好处是 WYSIWYG(What you see is what you get)
  • 但坏处是 WYSIAYG(What you see is all you get)

命令行在某些情况下能更快完成任务。

对于自动化来说,命令行是必要的。

16《强力编辑》(编辑器)

建议最好精通一种编辑器。

建议你所选择的编辑器有如下特性:

  • 可配置
  • 可扩展
  • 可编程

建议:

  • 如果你用多个不同的编辑器,但只用基本特性:选一种强大的编辑器,好好学习它。
  • 如果你有最喜欢的编辑器,但不使用全部特性:学习它,减少敲键盘次数。
  • 如果你有最喜欢的编辑器,且尽可能地使用它:尝试扩展它。

17《源码控制》

其重要性无需多言。

18《调试》

没人能写出完美的代码,所以调试肯定会占用大量时间。

心理上:

  • 接受事实:调试就是解决问题。
  • 不要发出指责
  • 不要惊慌

策略:

  • 使数据可视化
  • 跟踪
  • 按顺序陈述那些自己在检查代码时想当然的事情,途中或许就能发现问题。
  • 比起怀疑环境有BUG,先怀疑自己使用有问题

如果最终没有思路,只能使用”二分法“了。

当一个让你吃惊的BUG被发现时:

  • 你需要意识到你的一个或多个假设是错误的。
  • 证明你的假设
  • 确定为什么先前没有找到
  • 看是否有能更早发现它的机制
  • 是否有另一些地方也有类似问题
  • 警告团队其他成员可能有类似的假设

调试检查列表:

  • 报告的BUG是直接原因,还是外在症状?
  • bug在哪?编辑器里?系统里?还是你的代码里?
  • 如何向同事解释这个BUG?
  • 如果BUG通过了单元测试,那么单元测试是否有问题?
  • 造成BUG的条件是否存于系统的其他地方?

19《文本操纵》

文本操纵很有用。
你应该学习一种文本操纵语言

作者的一些应用举例:

  • 数据库schema维护
  • Java属性(property)访问
  • 测试数据生成
  • 写书
  • C与Object Pascal的接口
  • 生成web文档
  • 等等

20《代码生成器》

有时候你需要重复和过去类似的内容。为了省事儿,你可以:
编写能编写代码的代码

有两种:

  • 被动代码生成器:生成一次就不用了,之后与生成器脱离关系。(比如VS的模板向导)
  • 主动代码生成器:总在需要时生成,不用保存。(比如UE4生成generated.h)

被动代码生成器用途举例:

  • 创建新的源文件
  • 在编程语言之间进行一次性转换
  • 生成计算昂贵的资源

主动代码生成器用途举例:

  • 一种便利手段
  • 多用于遵守DRY原则

代码生成器并不复杂,说白了就是一些print语句

代码生成器不一定必须生成代码。

猜你喜欢

转载自blog.csdn.net/u013412391/article/details/114936206