代码生成是不是很糟糕?

Gra*_*ton 25 nhibernate code-generation

这是一个主观问题.

最近我一直在努力学习NHibernate.它的问题至少是2倍:

  1. 映射需要手动编码的xml文件
  2. 需要手动编码的实体类

虽然NHibernate是一个很棒的框架,但是需要编写映射文件并创建模仿数据库表的实体类是很难写的.有一些工具可以缓解这个问题,例如Castle ActiveRecord或NHibernate Fluent.

但是,尽管这些工具可以减少代码重复问题,但仍然需要编写一些重复代码,或者必须添加一些装饰属性.我现在正在尝试一些代码生成工具,它允许我直接从数据库生成映射文件和实体类.对我来说,这是一项更省力的任务.

你怎么看?

Ano*_*yne 33

一般来说,您不希望在生成代码之后对其进行编辑(特别是如果代码生成器的输入很复杂和/或可能会更改).

我发现使用代码生成作为构建过程的一部分通常是可以的(因此生成的代码永远不会受版本控制).

我对"一次性"代码生成(代码生成然后手动调整和扩展)的体验是它的痛苦来源.如果您想要返回并更改生成代码的数据,您几乎总是必须手动合并自定义更改...

  • "生成的代码永远不会受版本控制".同意这是目标.不要签入二进制文件!在可读性方面,生成的代码有时也可能是二进制代码...... (3认同)

Ran*_*pho 10

正确完成代码生成是一件好事,但是经常做错了.

IMO,代码生成器必须足够智能,以处理对生成的代码的更改.回到.NET 1.0天,即使是闪亮的新Visual Studio .NET代码生成器也可以做到这一点 - 在合理范围内.使用.NET 2.0,我们获得了部分类,使其更加简单.

然而,仍有一些发电机无法工作多次.

我的"好"代码生成规则:

  • 代码应该在生成代码的IDE中生成.没有第三方可执行文件.通常,这是一个Visual Studio插件,但此规则也适用于其他语言.
  • 生成的代码应提供清晰易用的扩展功能.
  • 生成的代码应该对开发人员不可见.
    • 换句话说,开发人员应该只使用设计器来修改生成的代码.