【问题标题】:How should I call a layer of auto-generated code?我应该如何调用一层自动生成的代码?
【发布时间】:2009-12-30 22:33:05
【问题描述】:

我有一个这样工作的框架:在定义一些元数据后,它会生成带有 PHP 类的 PHP 代码。这些类是抽象的,旨在被子类化。

例如,如果我在后端定义一个 User 类,它将生成一个 UserBase 类,我只是将其子类化为:

class User extends UserBase {
    //....
}

UserBase 提供一些通用功能,例如为这些定义的属性 age、name、email 以及 getter 和 setter。它还进行验证。

接下来,它会生成一个 UserDataMapper 类,该类可以将用户保存到数据库中,或者从数据库中恢复用户,查找用户,删除用户等。

PHP 代码分为 3 部分:

1) 系统代码(“不要碰它!”)

2) 自动生成的代码(“不要手动更改!”)

3) 用户代码(“在这里做你想做的事!”)

在分层思考时,系统代码不太了解自动生成的代码(至少对于一些罕见的特殊情况),也不了解用户代码。自动生成的代码使用系统代码,但对用户代码一无所知。用户代码使用系统代码和自动生成的代码。

我现在正在为我的框架编写文档,但在这里命名图层时遇到了麻烦,尤其是自动生成代码的图层;)

那我怎么称呼它? “服务层”也许?因为实际上,自动生成的代码只是为了方便用户,让他的辛苦生活变得更轻松,并通过在后端按下一些按钮来帮助快速重构。

如果有任何建议,我们会很高兴。谢谢大家。

【问题讨论】:

  • 自动生成的代码层有什么作用/促进?

标签: php architecture frameworks


【解决方案1】:

应用骨架层,还是只是骨架?

【讨论】:

    【解决方案2】:

    嗯...这是一个棘手的问题,因为这个架构并不真正符合任何标准模型。

    也就是说,只要您没有其他系统服务(例如邮件传输、日志记录等),“服务层”似乎合理合适。如果您有这些服务(我怀疑这很有可能),那么事情就会变得混乱。

    作为建议,“抽象”或“切换”层如何? (这实际上取决于该层提供的设施。)

    【讨论】:

    • 你说得对,我有这些。 “抽象”听起来很难理解……不确定……然后切换??嗯......实际上并没有在那里切换很多。或者只是“自动编码层”?
    【解决方案3】:

    InterViews 是一个非常好的用户界面系统,建于 80 年代后期。它有一个名为 ibuild 的用户界面构建器,这是我第一次看到系统生成代码,旨在通过子类化进行定制。 http://portal.acm.org/citation.cfm?id=120804

    他们使用的图层名称是:

    1. InterViews 工具包
    2. Unidraw 系统
    3. 核心类(生成代码)
    4. 核心子类(自定义应用代码)

    核心类是生成的,从未修改过。对于每个核心类,都有一个核心子类,它只是一个微不足道的 C++ 存根。如果核心子类在代码生成时不存在,则生成它,否则假定有人已经定制了它。因为核心子类非常琐碎,所以无论生成的代码或系统代码如何变化,它们都不会改变。

    我不会太担心图层的名称。这是一个关于如何生成代码的漂亮模型,人们很快就会欣赏它的工作原理。

    【讨论】:

    • 有趣!谢谢你分享这个。核心类和核心子类听起来很不错/合乎逻辑。
    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 2021-02-16
    • 2011-01-30
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多