常常看到有人提问,如何在通用代码生成器中实现复杂逻辑,有时是提问,有时是抱怨。我觉得,这是一个值得好好讨论一下的问题。
通用代码生成器的实现机制是什么,所有人都会说是模板法。那我们来讨论一下模板和制品的关系。比如说,一个方向盘的模板和方向盘的制品,谁贵?所有人都会告诉你是模板贵。在常规的制造业中,模具是经常使用的生产工具,也是一种比较贵的设备。使用模板,是为了大量生产。所以大家才容忍了昂贵的模板。在软件工程中,这个规律还是一样的。代码的模板,当然比产品的代码贵,也就是复杂。所以对复杂的功能而言,比如一个 1000 行的 SQL 查询。您如果用模板实现,没有几万行是不可能的。代码的模板,简单的功能虽说比产品代码复杂,但也复杂不到哪里去。而代码越复杂,代码模板的复杂程度简直是指数级的复杂起来。在某一个域值以上,代码即使能勉强写出来,写出代码的模板是不可能的,也是不明智的。
好在,在另一个维度上,关系是这样的,那就是代码模板的使用频度,简单的代码模板,比如说 ListAll。几乎每种功能都要使用。而比如说 Buy 这的功能,只有有购物功能的软件才会使用。而您的 1000 行的复杂查询,只有您才需要,公司花钱,就是让你写这个东西的。这其实也是可以理解的。比如说您去造一架飞机,您不能指望所有的部件都是货架产品。如果您是一个硬件工程师,总有一些部件,您需要启动您的车床,如果您是软件工程师,您总是需要打开您的笔记本的。
所以,通用代码生成器对复杂查询的态度是,从易到难,逐步实现。但是我想,我大概不会去实现 1000 行的 SQL 查询。至于您如果要写 10000 行的复杂查询的模板。可能它的模板,写出来了也不会有第二个人需要使用的。
通用代码生成器是某种编程语言的代码生成器,模板不支持的,您永远可以使用您的 IDE。代码并没有锁起来,这些复杂功能,是证明您的能力的机会。

502

被折叠的 条评论
为什么被折叠?



