1

我在一个项目中有一个不寻常的环境,其中有许多文件,每个文件都是独立的独立脚本。脚本所需的所有代码都必须在一个文件中,我无法使用包含等引用外部文件。

所有这些文件中都有一个共同的功能,即授权是每个文件中的最后一个功能。如果这个函数发生了变化(就像它不时发生的那样),它必须在所有文件中进行更改,并且有很多文件。

最初,我正在考虑将授权功能保存在一个单独的文件中,并运行一个批处理过程,通过将 auth 文件与其他文件相结合来生成最终文件。但是,这在调试时非常麻烦,因为为此目的,auth 函数需要在主文件中。所以我总是在包含组合文件的文件夹中测试和调试,然后必须将更改复制回未组合的文件。

谁能想到解决这个问题的方法?即在多个文件中维护相同的代码片段。

4

4 回答 4

2

我不确定“为此目的,auth 函数需要在主文件中”是什么意思,但典型的 Unix 解决方案可能是在此处使用 make(1) 和 cpp(1) 。

于 2009-12-17T06:33:35.633 回答
1

不确定您使用的是什么环境/编辑器,但您可以做的一件事是使用预构建事件。创建一个定义导入区域的开始标签/结束标签,然后在预构建事件中复制标签之间的公共代码,然后编译...

//$start-tag-common-auth ..... 代码在这里..... //$end-tag-common-auth

在您的预构建事件中,只需找到这些标签,并将它们替换为导入代码,然后完成编译。

VS 支持可以调用外部进程但不直接与环境交互的 pre-post 构建事件(如批处理文件或脚本)。

于 2009-12-17T06:36:36.780 回答
1

不要将身份验证代码保存在单独的文件中,而是将现有脚本之一指定为主脚本或主脚本。使用这个来编辑/调试/处理身份验证代码。然后添加一个构建/批处理过程,就像您正在谈论的那样,将身份验证代码从主脚本复制到所有其他脚本中。

这样,您仍然可以随时调试和使用主脚本,您不必再担心一个文件,并且您的构建/部署过程使所有内容保持同步。

您可以使用@Priyank Bolia 建议的技术来轻松查找/替换所需的代码位。

于 2009-12-18T17:08:36.003 回答
0

我能想到的丑陋方式:

在所有文件中都有原始代码,并用如下标记包围它:

///To be replaced automatically by the build process to the latest code
String str = "my code copy that can be old";
///Marker end.

构建过程可以从一个通用代码文件中自动替换此代码块。

于 2009-12-17T06:37:14.910 回答