【问题标题】:Can I put C# and Java code in the same file to make porting my code easier?我可以将 C# 和 Java 代码放在同一个文件中以便更轻松地移植我的代码吗?
【发布时间】:2013-08-26 12:54:35
【问题描述】:

我正在将一些代码从 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) 进行任何更改。

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

【问题讨论】:

  • 即使这是可能的,这也将是一场绝对的灾难

标签: java c# c-preprocessor


【解决方案1】:

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

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

为您的代码创建一个 java 分支和一个 c# 分支。它更易于维护和保持清洁。

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

你也会在相同的文件中移植到 php、ruby、perl、python 等吗?

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

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

【讨论】:

  • 这个。绝对没有充分的理由将两者混在一起。虽然 C# 和 java 有很多相似之处,但这种关系并不是 1:1。让你自己和未来的程序员头疼,把他们分开。
  • 完全同意并 +1。另请注意,如果您在 C# 和 Java 中使用相同的代码,那么您基本上是在复制整个代码库......如果在 OP 的情况下可能的话,我会坚持使用一种语言/框架。
  • @Renan 实际上,我将复制我的整个代码库,以便它支持 C# 和 Java。我不期待它。
  • @user2023861 只是为什么您想要或需要支持两种语言?
  • 我正在编写一些模拟 API 的代码。 API 返回昂贵的数据。我的项目就像 API 一样,但返回虚假数据。使用它的人有兴趣编写访问数据的代码,而不是数据本身。这是一个小众项目,但它在 Codeplex IMO 上获得了大量下载(我不会在这里插入)。无论如何,该 API 以多种语言存在,包括 C# 和 Java。这就是为什么我想以这种方式复制我的代码。
【解决方案2】:

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

  1. 每次您都必须在两个文件之间滚动
  2. 在几乎每个 IDE 中,您都可以并行处理代码
  3. Viusal studio 支持 J# 语法(几乎是 Java),因此您将在两个文件中都有适当的突出显示

【讨论】:

  • 仍然支持 J# 吗?我以为我读到 M$ 停止了对它的支持。
【解决方案3】:

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

【讨论】:

  • 我不会否决这个答案,因为即使您将 te OP 推向了一条肯定悲痛和咬牙切齿的道路(并且可能在这样做时笑得很残忍-我知道我会这样做) ,您在技术上是正确的。
  • 你知道什么... +1。
  • 实际上我要求的是我的解决方案是否有效,以及是否值得麻烦。我不知道维护已移植到另一种语言的代码的最佳方法,但这不是。
  • 出于好奇,您想将程序移植到哪里? Mono 项目在增加 .net 的平台可访问性方面做得很好。你调查过吗?
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 1970-01-01
    • 2015-09-20
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    相关资源
    最近更新 更多