标签: code-generation

代码生成器坏了吗?

我使用MyGeneration和nHibernate来创建基本的POCO对象和XML映射文件.我听说有些人说他们认为代码生成器并不是一个好主意.目前最好的想法是什么?只是代码生成在生成数千行不可理解的代码时才会变坏吗?

nhibernate code-generation poco

16
推荐指数
5
解决办法
3431
查看次数

缩小/混淆PHP代码

我使用Haxe生成PHP代码.(这意味着你用Haxe语言编写代码并在编译后得到一堆php文件.)今天,一位客户告诉我他需要一个用Haxe制作的旧项目的新功能.他还告诉我他为了自己的需要改变了代码中的一些小东西.现在我首先将他的更改移植到我的Haxe代码然后添加新功能,否则他的更改将在下次编译项目时被覆盖.

为了防止再次发生这种情况,我正在寻找一种缩小/混淆PHP代码的程序.目标是使代码尽可能不可读/不可编辑.
理想的工具可以在Linux下运行,可以处理整个文件夹及其包含的所有文件.

有人有什么建议吗?

php obfuscation code-generation haxe minify

16
推荐指数
2
解决办法
3万
查看次数

Rails:创建自定义数据类型/创建速记

我想知道如何创建在rake迁移文件中使用的自定义数据类型.示例:如果要创建模型,则可以在迁移文件中添加列.它可能看起来像这样:

  def self.up
    create_table :products do |t|
      t.column :name, :string
      t.timestamps
    end
  end
Run Code Online (Sandbox Code Playgroud)

我想知道如何创建这样的东西:

t.column :name, :my_custom_data_type
Run Code Online (Sandbox Code Playgroud)

这样做的原因就是创建一个"货币"类型,它只不过是精度为8且比例为2的十进制数.因为我只使用MySQL,所以这个数据库的解决方案足够了.

感谢您的反馈和意见!

ruby customization types code-generation ruby-on-rails

16
推荐指数
1
解决办法
3367
查看次数

域对象生成DTO和映射器

我有很多java域对象需要转换为DTO.

请不要以反模式的东西开始,因为历史悠久,Domain Objects就是它们的原因,我无法修改它们(或者不能修改它们,见下文).

所以,当然,我们已经过了手工完成这一切的时代.我环顾四周,推土机似乎是DTO映射的首选框架.

但是......我真正喜欢的是:在DTO中注释我想要的类和字段,并运行一个生成DTO和映射器的工具.

这听起来太不合理吗?

这样的工具已经存在吗?

java mapping code-generation dto

16
推荐指数
2
解决办法
1万
查看次数

IoC/DI面对winforms和其他生成的代码

当使用依赖注入(DI)和控制反转(IoC)时,对象通常会有一个构造函数,它接受对象正常运行所需的依赖集.

例如,如果我有一个需要服务来填充组合框的表单,您可能会看到如下所示的内容:

// my files
public interface IDataService {
    IList<MyData> GetData();
}

public interface IComboDataService {
    IList<MyComboData> GetComboData();
}

public partial class PopulatedForm : BaseForm {
    private IDataService service;
    public PopulatedForm(IDataService service) {
        //...
        InitializeComponent();
    }
}
Run Code Online (Sandbox Code Playgroud)

这在顶级工作正常,我只是使用我的IoC容器来解决依赖关系:

var form = ioc.Resolve<PopulatedForm>();
Run Code Online (Sandbox Code Playgroud)

但面对生成的代码,这会变得更难.在winforms中,生成组成其余部分类的第二个文件.此文件引用其他组件(如自定义控件),并使用no-args构造函数来创建此类控件:

// generated file: PopulatedForm.Designer.cs
public partial class PopulatedForm {
    private void InitializeComponent() {
        this.customComboBox = new UserCreatedComboBox();
        // customComboBox has an IComboDataService dependency
    }
}
Run Code Online (Sandbox Code Playgroud)

由于这是生成的代码,我无法传递依赖项,并且没有简单的方法让我的IoC容器自动注入所有依赖项.

一种解决方案是传递每个子组件的依赖关系,PopulatedForm即使它可能不需要它们直接,例如使用IComboDataService所需的UserCreatedComboBox.然后,我有责任确保通过各种属性或setter方法提供依赖项.然后,我的PopulatedForm构造函数可能如下所示:

public PopulatedForm(IDataService …
Run Code Online (Sandbox Code Playgroud)

c# code-generation dependency-injection inversion-of-control winforms

16
推荐指数
1
解决办法
2676
查看次数

SBT使用项目定义的生成器生成代码

我想编译一个包含java源代码生成器的项目,然后在单个项目中编译生成的代码.即:编译Generator.scala,运行Generator.generate(outputDir),将outputDir,package编译成jar.我正在尝试这个:

sourceGenerators in Compile <+= sourceManaged in Compile map { out =>
    Generator.generate(out / "generated")
}
Run Code Online (Sandbox Code Playgroud)

但是sbt抱怨

[error] Build.scala:1: object example is not a member of package org
[error] import org.example.Generator
Run Code Online (Sandbox Code Playgroud)

基本上,sbt没有看到它编译的项目中定义的Generator.是不是可以用sbt的方式做到这一点?

code-generation sbt

16
推荐指数
1
解决办法
3136
查看次数

是否有向Eclipse中的现有构造函数添加字段的快捷方式?

Eclipse中是否有任何快捷方式允许我将字段添加到现有构造函数的参数列表中?

例:

我有这个课:

public class A {
    int a;
    int b;

    public A(int a, int b) {
        this.a = a;
        this.b = b;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我添加一个字段int c(或许多字段)时,我想将它添加到构造函数的参数列表中并将参数分配给字段:

public class A {
    int a;
    int b;
    int c; //this is new

    public A(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前通过手动创建参数,然后按CTRL + 1,然后选择"将参数分配给字段"来完成此操作

但如果我一次添加多个字段,这不是一个很好的解决方案imho.

我不想创建一个新的构造函数!

java eclipse code-generation keyboard-shortcuts

16
推荐指数
4
解决办法
6156
查看次数

如何从Swagger架构生成基本的TypeScript接口?

我正在寻找一种从Swagger架构生成简单TypeScript接口的方法.我发现的大多数解决方案都是不必要的复杂.

我想生成这样的接口:

export interface IBar {
    a?: string;
    b: number;
    c: Date;
    baz?: IBaz;
}

export interface IBaz {
    d: number;
    color: Color;
}

export enum Color {
    RED = 0,
    GREEN = 1,
    BLUE = 2,
}
Run Code Online (Sandbox Code Playgroud)

从这样的架构:

    {
  "x-generator": "NSwag v11.14.0.0 (NJsonSchema v9.10.24.0 (Newtonsoft.Json v9.0.0.0))",
  "swagger": "2.0",
  "info": {
    "title": "",
    "version": ""
  },
  "schemes": [],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/api/Foo/GetBarDescriptions": {
      "get": {
        "tags": [
          "Foo"
        ],
        "operationId": "Foo_GetBarDescriptions",
        "parameters": [], …
Run Code Online (Sandbox Code Playgroud)

code-generation swagger typescript

16
推荐指数
6
解决办法
2万
查看次数

代码生成器与ORM与存储过程

这些软件体系结构在哪些领域发挥作用或失败?

哪些关键要求会促使您选择一个而不是另一个?

请假设您有开发人员可以执行良好的面向对象代码以及良好的数据库开发.

另外,请避免神圣的战争:)这三种技术都有利有弊,我对哪种方式最适合使用感兴趣.

language-agnostic architecture orm code-generation stored-procedures

15
推荐指数
3
解决办法
4746
查看次数

C/C++有哪些替代语法?(想想SPECS或Mirah)

我想知道C或C++是否有更简单或更强大的语法.我已经遇到了SPECS.这是C++的替代语法.但是有没有其他什么关于C呢?

它也可以是一种代码生成器,因此像functor这样的东西可以更简洁地定义.我想它可以作为代码生成器编译成C或C++代码,这与你在替代语法中编写的代码非常相似.

Mirah就是为Java做这个的一个例子.

理想情况下,我想在Go中编写C语法.我喜欢他们如何修理开关盒,并且通常使一切都变得更加冗长.

c c++ compiler-construction syntax code-generation

15
推荐指数
2
解决办法
2483
查看次数