代码生成器技术乱弹十七,让我们来玩石子,代码生成群论初步
< 返回列表时间: 2019-12-24来源:OSCHINA
【围观】麒麟芯片遭打压成绝版,华为亿元投入又砸向了哪里?>>>
对代码生成器而言,我们可以从集合论的基础上定义代码生成的代码生成置换群的空间和每个动词算子的含义。
对谋个具体的域对象(数据对象)而言,代码生成置换群是他的所有字段及某个字段的所有合法取值构成的笛卡尔空间,这个空间非常庞大,但对任何一个域对象而言,这都是一个有限的空间。
对数据库动词算子而言,有两个行集是重要的,一个是动词算子的输入行集,这一般是数据库里的纪录或者是记录的一部分,这些行集也一定是代码生成置换群的子集。
还有一个行集是动词算子的输出行集。这个行集可能是输入行集的子集,也可能会有所变化,但如果结果是正确的,这个行集也是代码生成置换群的子集。
动词算子分两类,一类不影响数据库里的行集,一类会影响。(我们把影响一条数据库种行的动词算子也算做影响行集的动词算子,应为我们可以把它视为只有一行的行集。)
所以这样一来,所有的动词算子就都变成了集合操作。
以下是一些动词算子的集合论定义:
ListAll:没有输入行集,列出所有的数据库行集,输出至输出行集,不影响数据库行集,原样输出。
Update:输入行集是数据库行集某行(ID)和代码生成置换群的某行(除ID),影响数据库行集,可能影响数据库行集某行除ID字段外的一切字段。没有输出行集
Clone:输入行集是数据库行集某行(ID),影响数据库行集,在数据库行集种新增一行ID为新的,其他字段和原有行集一种的行。没有输出行集。
SearchByFieldsByPage:输入行集是生成置换群的某行,不影响数据库行集,输出随输入行变化,是数据库行集的一个子集,分页。
这是我对代码生成群论的初步构想,抛砖引玉,备忘,欢迎大家拍砖。
热门排行