这是我正在参与的辩论.我想得到更多的意见和观点.
我们有一些在构建时生成的类来处理数据库操作(在这个特定情况下,使用SubSonic,但我不认为这对于这个问题非常重要).生成设置为Visual Studio中的预构建步骤.因此,每次开发人员(或官方构建过程)运行构建时,都会生成这些类,然后将其编译到项目中.
现在有些人声称,在源代码控制中保存这些类可能会导致混淆,以防您获得的代码与您自己的环境中生成的代码不匹配.
我想有办法追溯代码的历史,即使它通常被视为黑盒子.
任何论据或反驳论点?
由于上述原因,此时我不会选择接受的答案.
我正在生成大量的ASP.NET MVC脚手架代码.所有生成的文件都是使用标准命名约定的部分类.例如,我的员工控制器文件名为EmployeeController.cs.如果我希望使用自定义的非生成逻辑扩展EmployeeController,我将创建一个名为EmployeeControllerCustom.cs的第二个部分类文件.我将自定义和生成的逻辑分成两个不同的文件,因此下次生成EmployeeController时,我的自定义更改不会被覆盖.将"自定义"后缀添加到文件名对我来说似乎是合理的,但是我是否应该遵循更成熟的部分类文件命名约定?
我正在从xsd模式文件中进行代码生成方面的一些研究.我的要求:
(另请参阅我的其他问题:如何使用常见包含从xsd生成多个类?以及如何从wsdl中的xs:documentation标记生成注释?
我找到了以下选项:
我错过了吗?因为(1),(2)和(5)不生成2.0代码,并且我在从(3)序列化代码时遇到问题.生成代码时你会用什么?
有没有办法在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
我见过如下例子:
$data = array(
'username' => $user->getUsername(),
'userpass' => $user->getPassword(),
'email' => $user->getEmail(),
);
Run Code Online (Sandbox Code Playgroud)
但是,实际上我一直没有留下尾随的逗号.我做错了什么,或者这只是另一种做法?如果我使用框架不会使尾随逗号影响代码生成负面?我已经看到在其他语言(Java,C++)的数组声明中使用尾随逗号,所以我假设留下尾随逗号的原因并不是特定于PHP,但这引起了我的兴趣.
有没有办法我可以像这样生成一个代码文件:
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)
这样我可以从数据库生成一个类,然后使用非生成的文件来标记它?
我需要一个可以在VBScript和.NET中使用的正则表达式,它只返回字符串中的数字.
例如,以下任何"字符串"应仅返回1231231234
这将在电子邮件解析器中用于查找客户可能在电子邮件中提供的电话号码并进行数据库搜索.
我可能错过了类似的正则表达式,但我确实在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) 我在处理我的问题Visual Paradigm project.我创造了一些Java sources,我立即Reverse与他们做了.然后我将类的模型元素拖到类图中.我修改了类图,为这些类添加了一些操作,我尝试更新代码.
但我得到了警告
"There is no class model available for code generation"
Run Code Online (Sandbox Code Playgroud)
并且Java sources尚未使用新操作进行更新.
有人可以帮我解决这个错误吗?
code-generation ×10
c# ×4
arrays ×1
attributes ×1
crud ×1
frameworks ×1
java ×1
php ×1
regex ×1
scaffolding ×1
vb.net ×1
vbscript ×1
xsd ×1