0

我正在将一些代码从 C# 移植到 Java。我发现很容易错过代码或犯其他错误。我在想,如果我可以让两个版本的代码存在于同一个文件中,那么我可以减少这些错误。我只会编辑一个文件,只编辑文件的两个部分。

如果 Java 有一个像 C# 这样的预处理器(我知道有一些项目允许这样做),我可以写这样的东西:

#if C_SHARP
namespace MyMath
{
    class NaiveFib
    {
        public int Run(int n)
        {
            if (n == 0) return 1;
            if (n == 1) return 1;
            return Run(n - 1) + Run(n - 2);
        }
    }
}
#elif JAVA
package MyMath;

public class NaiveFib
{
    public int Run(int n)
    {
        if (n == 0) return 1;
        if (n == 1) return 1;
        return Run(n - 1) + Run(n - 2);
    }
}
#endif

考虑到 Java 文件被命名为 *.java 而 C# 文件被命名为 *.cs,我的 IDE 识别文件包含可编译代码时仍然会遇到问题。如果我检查正确的设置,看起来我可以让 Visual Studio 认为 *.java 文件是 C# 文件。我不必对我的 Java IDE (Eclipse) 进行任何更改。

这一切都可能吗?这是一个好主意还是它比它的价值更麻烦?

4

4 回答 4

3

我会说这个想法很好,但是代码很难阅读。一团糟。也许如果你有一个非常简单的代码库......但实际上会导致大混乱

您可能会花很多时间查看错误的代码,向上滚动 n 并变得更加困惑。文件中的干净代码将成为您的焦点,当您打开您的 java 项目时,您知道您使用的是 java。当您打开 c# 时,您知道它是 C# 等。

执行代码的 java 分支和 ac# 分支。它更易于维护和保持清洁。

想一想您想要升级环境的情况,为什么要在仅升级 C# 代码时浪费时间/金钱来重新编译 Java 代码等等!

你会在同一个文件中移植到 php、ruby、perl、python 等吗?

只需让程序员打开他们想查看和使用的代码,单独的文件!

一些 Java 程序员看到 C# 代码时可能会跳出窗口!想过吗?;)

于 2013-08-26T12:57:50.590 回答
1

在我看来,这更麻烦,因为:

  1. 每次您都必须在两个文件之间滚动
  2. 在几乎每个 IDE 中,您都可以并排处理代码
  3. Viusal Studio 支持 J# 语法(几乎是 Java),因此您将在两个文件中都有适当的突出显示
于 2013-08-26T12:59:57.867 回答
1

在您的构建中添加一个引导步骤,以便在编译之前提取所需的 Java 或 C# 代码。或者,如果您真正想要的只是在 Java 中工作,则只需注释掉 C# 代码。

于 2013-08-26T13:00:44.637 回答
0

尽管您不保存任何文件,但这种方法的缺点是您失去了将项目模块化为不同语言的基本概念。其次,大多数阅读您的代码的其他人不会发现在同一个文件之间切换不同的语言那么简单。最后,您将浪费时间和资源一次又一次地重新编译完整代码(甚至是 java 代码),尽管您仅对 C# 代码进行了修改,例如。

于 2013-08-26T13:42:24.500 回答