【Unix编程艺术】第9章 生成
来源:互联网 发布:网络机顶盒使用视频 编辑:程序博客网 时间:2024/06/06 08:59
第9章 生成
9.1 数据驱动编程
数据驱动编程时,需要将代码和数据结构划分清楚,这样,在改变程序的逻辑时,只要编辑数据结构,而不是代码。
与OO不同的是,1、数据驱动中,数据不仅仅是某个对象的状态,也定义了程序的控制流。2、OO首先考虑的是封装,数据驱动看重的是尽可能编写少的固定代码。
数据驱动的重要原则是:始终把问题层次晚上推。
ascii
有意想不到的有用处的用法是好程序的标志之一。
要想程序和其他程序能够合作,那么程序的输出或者输入的格式都应该风格良好。
垃圾邮件,传统模式中存在着博弈;统计学过滤器则根据用户的反馈生成自己的过滤规则。
9.2 专用代码的生成
生成ASCII显示的代码
如果在程序中直接通过初始化器来写出所有行,会出现对齐、每行很难保证79字符的问题。Ascii源码的解决方法是通过脚本生成这部分代码。
Void showHelp(FILE *out, char *progname)
{
fprintf(out,"Usage: %s [-dxohv] [-t] [char-alias...]\n", progname);
#define P(s) fputs(s "\n", out);
#include "splashscreen.h"
#undef P
exit(0);
}
splashscreen.h由Makefile生成:
splashscreen.h: splashscreen
sed <splashscreen >splashscreen.h -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/.*/P("&");/'
从数据产生代码,使得可编辑的用法屏幕和它的显示一致。
为列表生成HTML代码
我们可以在代码中直接编写生成HTML表格的代码,但这样每当新添加数据的时候都需要修改生成<tc>和<td>的代码。更好的解决方案是把数据放在类似下面的文本文件中:
Aalat :David Weber :The Armageddon
Aelmos :Alan Dean Foster :The man
Agandar :Donald Kingsbury :Psychohistorical Crisis
而使用脚本来生成HTML表格:
# cat data | awk -F: '{printf("<tr><td>%s</td><td>%s</td></tr>\n",$1,$2,$3)}'
<tr><td>Aalat </td><td>David Weber </td></tr>
<tr><td>Aelmos </td><td>Alan Dean Foster </td></tr>
<tr><td>Agandar </td><td>Donald Kingsbury </td></tr>
代码生成的好处:
1. 尽可能少干活;
2. 让数据塑造代码;
3. 依靠工具;
4. 机制同测试分离。
- 【Unix编程艺术】第9章 生成
- 【Unix编程艺术】第1章 哲学
- 【Unix编程艺术】第6章 透明性
- 【Unix编程艺术】第10章 配置
- 【Unix编程艺术】第11章 接口
- 【Unix编程艺术】第12章 优化
- 【Unix编程艺术】第13章 复杂度
- 【Unix编程艺术】第15章 - 第19章
- 【Unix编程艺术】第2章 历史 - 双流记
- 【Unix编程艺术】第4章 模块性
- 【Unix编程艺术】第5章 文本化
- 【Unix编程艺术】第7章 多道程序设计
- 【Unix编程艺术】第8章 微型语言
- Unix编程艺术——代码生成
- 【Unix编程艺术】第3章 Unix哲学同其他哲学
- 【Unix编程艺术】第14章 语言:C还是非C
- 《Unix编程艺术》读书笔记
- unix编程艺术
- 假如我那时再努力点
- OTL 4.0, Example 41(Insert/Update/Select with CLOB in Oracle 8)
- 云计算知识普及:太有才了:情色讲解“云计算”
- Ubuntu 13.04 软件管理
- "The source file is different from when the module was built."问题的解决办法
- 【Unix编程艺术】第9章 生成
- 学习《精通oracle 10g pl/sql编程》的感受
- 4. 微软面试题: 在二元树中找出和为某一值的所有路径(树)
- retg
- 【Unix编程艺术】第10章 配置
- sybase IQ(15.2)中的常用函数和存储过程(2)
- Loadrunner集合点Rendezvous知识
- Rahul Zaveri
- 【Unix编程艺术】第11章 接口