数据比程序逻辑更易驾驭。尽可能把设计的复杂度从程序代码转移到数据中是个好实践,选择便于人类维护和操作的数据表示法也是好实践。

#9.1 数据驱动编程

数据驱动编程有时会跟面向对象混淆起来,后者是另一种以数据组织为中心的风格。它们之间至少有两点不同。

  1. 在数据驱动编程中,数据不仅仅是某个对象的状态实际上还定义了程序的控制流
  2. OO 首先考虑的是封装,而数据驱动编程看重的是编写尽可能少的固定代码。

#9.1.1 ascii

ascii 是 Unix 系统中的一个命令行工具。当一个 ASCII 值或字符被传递到此工具时,它会输出该字符的八进制、十进制、和十六进制值,同时也会显示对应的字符。例如,如果你输入  ascii A,你将得到 ‘A’ 字符的 ASCII 编码信息。

在 Unix 中,采用了数据驱动编程开发这个程序。所有字符名的字符串都放在了一个表结构中,这个表结构比代码中的任何函数都大。代码仅仅查表并完成数值转换等底层任务。

这种结构使得增加新字符名、改变现有字符名或删除旧字符名都非常容易,只要简单编辑数据表就行,不需要改动代码。