现在我们已经明白了TCL数据文件的常见方法(主动文件,英语言过程,选项/数值对),我们可以将其各自的优点组合进一个单独的数据格式中去.对强制性选项,我们使用固定位置参数时,多半与哑介词相结合增强可读性(见英语言过程).而所有的可随意选择的选项,宜用选项/数值对机制来进行处理,好让用户可以空着选项或在调用时改变其位置.最后,数据文件可能会是这样的:
d_rect from 10 10 to 150 50 -thickness 2
d_rect from 7 7 to 153 53 -thickness 2
d_text at 60 30 "Simple Drawing Tool" -anchor c -color red假定所有项目的color属性的默认值都是"blue".
作为一个个人习惯,我通常会写这样的命令:
d_rect
from 10 10
to 150 50
-thickness 2
d_rect
from 7 7
to 153 53
-thickness 2
d_text
at 80 30 "Simple Drawing Tool"
-anchor c
-color redI find it slightly more readable, but that"s all a matter of personal taste (or in my case lack of taste :-).
我觉得可读性要好一些,但这仅是一个个人偏好的问题.(or in my case lack of taste)(这句话是作者在调侃自己,但我不知如何把它译出来,请哪位大侠帮忙指点一下,译者注)
--------------------------------------------------------------------------------
▲更多复杂的数据
至今为止,我们已经对一个非常简单的包含矩形与文本的例子进行了研究.这种数据格式用主动文件设计样本非常容易读取并加以分析.
现在我们来看一个更为复杂的数据格式,来解释一下使用主动文件的更加"高级"的技巧.这将使你在使用TCL数据文件格式方面成为一个专家.
▲数据仓库工具
我过去经常收集设计样本,组成了一个样本库,每个都有一个简短的说明和一些属性.我还把在其中找到样本的书的名字,作者和ISBN号记下来,作为以后查找时的参考.为了记录所有这些信息,我用TCL写了一个数据仓库工具.其主要功能是把样本按照类别和级别进行分类,指出全书中每一个样本和讲述它的页码.
此工具的输入是与此相似的一个文件:#首先,我介绍一些你从中可以找到好的设计样本的书和设计程序时的习惯写法.每一本书,
#每一个网址,或是其他的样本资源都用关键字"source"指定,后跟一个唯一的标签及其他附
#加信息Source GOF {
Design patterns
Elements of reusable object-oriented software
Gamm, Helm, Johnson, Vlissides
Addison-Wesley, 1995
0 201 63361 2
}Source SYST {
A system of patterns
Pattern-oriented software architecture
Buschmann, Meunier, Rohnert, Sommerlad, Stal
Wiley, 1996
0 471 95869 7
}
#下一步,我介绍一些类别,为了更容易找到样本,我想把样本进行分组.每个类别都
#有一个名称(如"存取控制")和一个简短的说明.
Category "Access control" {
How to let one object control the access to one or more
other objects.
}Category "Distributed systems" {
Distributing computation over multiple processes, managing
communication between them.
}Category "Resource handling" {
Preventing memory leaks, managing resources.
}Category "Structural decomposition" {
To break monoliths down into indpendent components.
}#最后,我介绍了样本本身,每一个都有一个名字,属于一个或多个类别,出现在上述样
#本资源列表的一处或多处.每个样本都有级别,可能是"arch"(对于结构型样本),
#"design"代表较小规模的设计样本,"idiom"代表语言指定型样本.
Pattern "Broker" {
Categories {"Distributed systems"}
Level arch
Sources {SYST:99} ; # 这表示此样本在标记为"SYST"的书中
# 第99页加以讲述.
Info {
Remote service invocations.
}
}Pattern "Proxy" {
# This pattern fits in two categories:
Categories {"Access control" "Structural decomposition::object"}
Level design
# Both these books talk about the Proxy pattern:
推荐阅读
- 我TCL6198
- 王者清理游戏数据后果
- 我的 TCL768 一周使用经历
- FreeBSD 数据迁移方法
- MIUI11怎么备份数据
- 内交外换 明基P30数据交换能力初探
- 金融信用信息基础数据库是征信吗
- 10 FreeBSD连载:系统启动脚本
- 安装鸿蒙系统数据会丢失吗
- 关于W219的数据传输
