标签: code-generation

我应该在源代码管理中存储生成的代码

这是我正在参与的辩论.我想得到更多的意见和观点.

我们有一些在构建时生成的类来处理数据库操作(在这个特定情况下,使用SubSonic,但我不认为这对于这个问题非常重要).生成设置为Visual Studio中的预构建步骤.因此,每次开发人员(或官方构建过程)运行构建时,都会生成这些类,然后将其编译到项目中.

现在有些人声称,在源代码控制中保存这些类可能会导致混淆,以防您获得的代码与您自己的环境中生成的代码不匹配.

我想有办法追溯代码的历史,即使它通常被视为黑盒子.

任何论据或反驳论点?


更新:我问过这个问题,因为我真的相信有一个明确的答案.看看所有回复,我可以高度肯定地说,没有这样的答案.应根据多个参数做出决定.阅读下面的答案可以为您在决定此问题时应该问自己的问题类型提供非常好的指导.

由于上述原因,此时我不会选择接受的答案.

version-control code-generation

96
推荐指数
15
解决办法
1万
查看次数

88
推荐指数
6
解决办法
4万
查看次数

部分类文件的命名约定

我正在生成大量的ASP.NET MVC脚手架代码.所有生成的文件都是使用标准命名约定的部分类.例如,我的员工控制器文件名为EmployeeController.cs.如果我希望使用自定义的非生成逻辑扩展EmployeeController,我将创建一个名为EmployeeControllerCustom.cs的第二个部分类文件.我将自定义和生成的逻辑分成两个不同的文件,因此下次生成EmployeeController时,我的自定义更改不会被覆盖.将"自定义"后缀添加到文件名对我来说似乎是合理的,但是我是否应该遵循更成熟的部分类文件命名约定?

c# code-generation naming-conventions partial-classes

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

XSD代码生成器的比较

我正在从xsd模式文件中进行代码生成方面的一些研究.我的要求:

  • 必须使用通用集合生成C#2.0代码(或更高版本).
  • 必须从xsd注释生成注释
  • 必须生成完全可序列化的代码.
  • 当从具有相同包含的多个xsd生成时,应该能够生成可恢复的基本类型.

(另请参阅我的其他问题:如何使用常见包含从xsd生成多个类?以及如何从wsdl中的xs:documentation标记生成注释?

我找到了以下选项:

  1. 使用xsd.exe(随SDK和Visual Studio提供)
  2. 来自Daniel Cazzulino的 XSDCodeGen
  3. Xsd2Code
  4. CodeXS
  5. XsdObjectGen由Microsoft提供
  6. XSDClassGen(似乎在行动中缺失)

我错过了吗?因为(1),(2)和(5)不生成2.0代码,并且我在从(3)序列化代码时遇到问题.生成代码时你会用什么?

c# xsd code-generation

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

IntelliJ中的Builder模式代码生成

有没有办法在IntelliJ中自动编写Builder模式?

例如,给定这个简单的类:

class Film {
   private String title;
   private int length;

   public void setTitle(String title) {
       this.title = title;
   }

   public String getTitle() {
       return this.title;
   }

   public void setLength(int length) {
       this.length = length;
   }

   public int getLength() {
       return this.length;
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法,我可以让IDE生成这个或类似的:

public class FilmBuilder {

    Film film;

    public FilmBuilder() {
        film = new Film();
    }

    public FilmBuilder withTitle(String title) {
        film.setTitle(title);
        return this;
    }

    public FilmBuilder withLength(int length) {
        film.setLength(length);
        return this;
    }

    public Film build() …
Run Code Online (Sandbox Code Playgroud)

code-generation design-patterns intellij-idea builder-pattern

76
推荐指数
6
解决办法
3万
查看次数

为什么PHP数组示例会留下尾随逗号?

我见过如下例子:

$data = array(
   'username' => $user->getUsername(),
   'userpass' => $user->getPassword(),
   'email' => $user->getEmail(),
);
Run Code Online (Sandbox Code Playgroud)

但是,实际上我一直没有留下尾随的逗号.我做错了什么,或者这只是另一种做法?如果我使用框架不会使尾随逗号影响代码生成负面?我已经看到在其他语言(Java,C++)的数组声明中使用尾随逗号,所以我假设留下尾随逗号的原因并不是特定于PHP,但这引起了我的兴趣.

php arrays code-generation

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

我可以在分部类中定义属性,然后用另一个分类中的属性标记它们吗?

有没有办法我可以像这样生成一个代码文件:

public partial class A {
public string a {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

然后在另一个文件中:

public partial class A {
[Attribute("etc")]
public string a {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

这样我可以从数据库生成一个类,然后使用非生成的文件来标记它?

c# attributes code-generation partial-classes

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

元编程有什么用?

我读了:

我在元编程/代码生成背后的目的上承认了一些困惑.

有没有人有一个具体的例子,他们使用元编程/代码生成?更好的是伴随解释为什么它比替代品更好.

编辑:是否会被视为元编程?

language-agnostic code-generation metaprogramming

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

仅返回字符串中的数字0-9

我需要一个可以在VBScript和.NET中使用的正则表达式,它只返回字符串中的数字.

例如,以下任何"字符串"应仅返回1231231234

  • 123 123 1234
  • (123)123-1234
  • 123-123-1234
  • (123)123-1234
  • 123.123.1234
  • 123 123 1234
  • 1 2 3 1 2 3 1 2 3 4

这将在电子邮件解析器中用于查找客户可能在电子邮件中提供的电话号码并进行数据库搜索.

我可能错过了类似的正则表达式,但我确实在regexlib.com上搜索.

[编辑] - 在设置musicfreak的答案后添加了由RegexBuddy生成的代码

VBScript代码

Dim myRegExp, ResultString
Set myRegExp = New RegExp
myRegExp.Global = True
myRegExp.Pattern = "[^\d]"
ResultString = myRegExp.Replace(SubjectString, "")
Run Code Online (Sandbox Code Playgroud)

VB.NET

Dim ResultString As String
Try
      Dim RegexObj As New Regex("[^\d]")
      ResultString = RegexObj.Replace(SubjectString, "")
Catch ex As ArgumentException
      'Syntax error in the regular expression
End Try
Run Code Online (Sandbox Code Playgroud)

C#

string …
Run Code Online (Sandbox Code Playgroud)

c# regex vb.net vbscript code-generation

66
推荐指数
4
解决办法
6万
查看次数

警告:Visual Paradigm中没有可用于代码生成的类模型

我在处理我的问题Visual Paradigm project.我创造了一些Java sources,我立即Reverse与他们做了.然后我将类的模型元素拖到类图中.我修改了类图,为这些类添加了一些操作,我尝试更新代码.

但我得到了警告

"There is no class model available for code generation" 
Run Code Online (Sandbox Code Playgroud)

并且Java sources尚未使用新操作进行更新.

有人可以帮我解决这个错误吗?

java code-generation visual-paradigm

59
推荐指数
1
解决办法
1433
查看次数