BillySir——只要给我(Code Generator)足够多的信息,我就能生成任意功能的代码。


为什么要代码生成? 这个问题有很多文章说的很好. 需要的话我可以放链接.

软件工厂简介

http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/aj3softfac.mspx?mfr=true

软件工厂


通过一段时间对Code Generate的亲密接触,让我更加了解了他的习性.

后来得出了一个结论: 只要给我(Code Generator)足够多的信息,我就能生成任意功能的代码.

一,从三层架构来讲:

1. DataAccess 层,这一层已经有很多工具生成得很好了。剩下的就是多表查询这一块,哪些表放在一起查,如何查,如何解决字段重名问题,这个是各家有各家的做法。总之。DA层的生成已经是七七八八了。

2. 然后我们看看UI层。

一个软件,可以多种换肤,通过换肤可以把一个软件换得面目全非,而功能一成不变(想变也可以)。这证明了,UI层没有唯一性,存在不确定性。但生成其中一种UI,或者说皮肤,总可以吧? 可以,但要根据业务(Facade)来生成。

3.那么一切的焦点将转到:Façade(业务)能否生成?如何生成Façade?

一个软件的灵魂"核心"关键都在facade里面。而它的变化也是最大的。

我们从另一个角度来看,

一般的软件,我们接触到的,包括win也好web也好,都不是很复杂的软件,没有特别复杂的业务逻辑,没有复杂的算法,甚至往往是没有算法的。也可以理解为,只有做法,没有算法。

看看我们的程序员,被叫成coder,为什么? 因为我们大部分时间是在写一些很简单的代码,简单到似乎机械般,但就是因为它与机械般不完全一样,让我们无法用代码去生成。

二,业务代码的生成

业务代码的生成是世界性难题,一听到生成业务代码,基本得到的回答是: 不可能。难道我们只能当coder?

在仔细研究了代码生成的一些理论之后,得出来我上面说的那个结论: 只要给我足够的信息,我可以生成任意功能的代码.

既然coder做的工作很机械,我们就想法用机器代替coder做工作。那么coder做什么? 这个以后再回答。

要生成业务代码,需要的理论比较多,请各位理解。

障碍论

我们研究“规则与目标”的关系。

要说明这个,得举例,如走迷宫。迷宫的目标就是走到出口,而规则就是不能破坏迷宫的障碍物,等等多条规则。换成编程是什么,目标就是做出有XXXXX功能的软件,这就是客户提出的需求。或者是我们的系统分析员分析了客户需求后得出来的专业性结论,做出来功能是XXXXX的软件(系统)。

规则是什么?这就多了。可以分两类:

l        业务规则,如上面的不能破坏障碍物。

l        技术规则,这就包括技术实现上的各种限制,如在C#中,int型的变量i,不能赋null值,这就是一条语言规则,它属于技术规则。类似这样的规则有很多,语言本身就有许多规则,技术也有,如asp.net在一个页面的一次处理过程中不允许中途与用户交互。(未完,待续…)


博主简介:佘焕敏(shé),洋名 Billy Sir。

关注编程基础技术,并致力于研究软件的自动化生成。 对编程规范化、面向对象的极致使用也有着浓厚的兴趣。 同时非常希望能够写程序到65岁。

只有工匠精神,才能把常人觉得单调乏味的代码,当作作品雕刻成艺术品。