• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

无法全部生成,生成后需要手动修改,需要重新生成。再次生成时,需要合并手工修改。

需要比较,需要解决代码换行的问题。更好的是三方合并。

目前不可能生成软件的全部源代码,需要从能生成的老师开始,逐步扩大生成范围,最终实现全部源代码的生成。以烹饪为例,厨师还是人类,生成代码的机器人从简单的工作开始,先洗菜切菜,然后按照人类学的烹饪方法,最后学习烹饪的全过程。

所以在最终目标实现之前,需要长期做好人类和机器人的配合工作。也就是说,机器人需要先生成代码,然后需要人继续添加或修改代码。

理想情况下,一开始设计好所有的表格,然后机器人生成一次代码,剩下的就全是人类的工作了。其实情况不会那么理想。在某些时候,您需要添加表、添加字段或修改字段,因此您需要重新生成代码。以添加一个新字段为例。生成的代码有新添加的字段,但原代码有手工添加和修改的代码。如何合成,才能保留人类的劳动成果并拥有新增领域的代码?

有人可能会说,既然代码已经改了,那么在添加新字段的时候,也应该由人来改。这与机器人生成的代码质量高是相悖的。比如手动修改20个代码,如何保证这20个代码都是正确的,如何保证没有遗漏修改(第21个代码)?在实际项目中,边做边接收需求,不断反馈,精益求精,时不时的添加表格,添加/修改字段,尤其是添加字段,是一个很普遍的现象。如果代码生成器只能生成一次新表,那么它的实用性就会大打折扣。严格来说,不实用。所以,我曾经说过,不支持再生的代码生成器只是一个玩具。

第二种解决方案是重新生成前后两个代码,用对比工具对比,手工合成。这是目前常见的解决方案。不仅可以通过添加字段来修改表结构,还可以享受代码生成器的优势,手动修改的代码也不会失效。缺点是每次重生都要手动操作合成工具,效率很低。如果能自动合成,或者大多数情况下,最好。

改进方法是保存上次生成的代码,新代码生成后,会有三个代码,分别是:1。手动修改的代码,2。最后生成的代码,以及3。新生成的代码。自己实现一个工具,比较2和3的区别,把区别应用到1上,从而得到合成的代码。目前git把不同人对同一个文件的不同修改结合起来,也是这个思路。叫做“三方合并”。我不确定。在大多数情报部门下,可以自动合并。在少数情况下,真正的冲突是手动处理的。我自己还没有实现过这个方法。

目前还是用工具辅助,手动合并。那么就会出现另一个问题。生成的代码会被IDE格式化,从而改变换行符,也就是有些代码行因为太长被IDE自动换行。这样一来,再生就会出现很多差异,给人工合成带来更多的工作量。这些自动换行的代码行也可能与人工修改或重新生成后更改的代码行重叠,给人工合成带来麻烦和困难。

为了解决这个问题,我目前的解决方案是让生成的代码尽可能与IDE格式的代码保持一致。为此还修改了生成引擎,增加了换行的逻辑。Eclipse的单词换行效果很好,我很喜欢。不是简单的每个字都一视同仁。说到新的一行,只是字不破而已。而是考虑单词之间的关系,从最远的地方断行,这样断行后的代码可以有更好的阅读效果。比如两个参数, int abc,String def,这里涉及到四个词,分别是int,abc,String,def。它们的关系是int接近ABC,string接近def,可以简单表示为(int ABC)和(string def)。所以断行的时候会先在逗号处断行,然后在空格处断行。实际上,一行代码中单词之间的关系非常复杂。与语法密切相关。因此,生成时必须遵循相同的计算逻辑,这样才能生成正确的换行符。而且由于模板中需要添加单词之间的关系,模板中的代码变得更加直观。影响阅读。为了尽可能减少对阅读的影响,我们只在断行概率大的句子中添加词与词之间的关系。但实际上,一些看似很短的模板代码,由于一些变量的名字很长,实际上可能需要换行符,这就使得需要自动换行符和需要自动换行符之间无法划清界限。看看有没有好的解决办法。

有人说一行代码长不要紧,不需要格式化,因为代码生成后不需要手动修改。这个逻辑是正确的。就像我前面说的,我们将长期处于机器人与人合作完成工作的阶段。

如果使用上面提到的“三路合并”算法,并且把IDE的自动断行也看作是人工修改的一部分,就可以在一定程度上解决这个问题。

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now