美文网首页
合并代码思路

合并代码思路

作者: 塘朗山小钻风 | 来源:发表于2019-07-29 20:59 被阅读0次

    问题:

    在工作中经常需要自动生成代码。比如

    1. 根据UI自动生成UI框架代码。这里面包括按钮点击响应函数,toggle选中/取消选中响应函数,为文本控件赋值等等...。生成的代码可能达到最终代码的60%-70%。能节省大量工作量。

    2. 根据消息定义文件(不少是protobuf的*.proto文件)生成消息处理函数:消息接收处理函数和消息发送函数。就如下面这样:

    但这样有个问题,那就是当我们为这些文件添加逻辑代码以后,如果UI或proto修改就只能生成代码到别处,然后人工把两处代码合并在一起。

    我见过根据标签合并的,但无所不在的标签让代码非常丑。而且也容易碰到标签影响合并。解决方法还得从Linux上面的diff和patch命令中找。

    解决方法:

    Linux的diff命令能比较两个文件的差异。diff file1 file2 > diff.txt。执行后把输出重定向到一个文件中。它典型的样子是这样的:

    c 表示对应行修改。 a 表示file1增加对应行与file2等价。 d 表示file1比file2多了对应一行。

    c 对应项用‘---’这样的行分为两段。

    假设file1是添加过代码的源文件。file2是新生成的文件。接下来是处理下这个diff.txt:

    一般情况下需要把d对应项去掉:因为这是手动添加的逻辑要保留(例外是有些UI删除了。这时候就需要判断删除内容了,不过这样的很少)。保留着ac项。然后执行patch file1 diff.txt。

    新的修改就合并到源文件中去了。

    Window系统中并没有这两个命令文件。可以下载cygwin,里面带有比较全的Linux命令。我们需要的就这两个。

    源码在这里:https://github.com/lizhipingmaster/file_merge

    相关文章

      网友评论

          本文标题:合并代码思路

          本文链接:https://www.haomeiwen.com/subject/gviilctx.html