我正在将一些代码从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
我的IDE仍然存在问题,我认为文件包含可编译代码,因为Java文件名为* .java,C#文件名为* .cs。看起来我可以让Visual Studio认为* .java文件是C#文件,如果我检查正确的设置。我不必对Java IDE(Eclipse)进行任何更改。
这一切都可能吗?这是一个好主意还是比它的价值更麻烦?
答案 0 :(得分:3)
我会说这个想法很好,但代码很难阅读。一团糟。 也许如果你有一个非常简单的代码库......但实际上会导致 BIG CHAOS !
您可能会花费大量时间查看错误的代码,向上滚动n并且更加困惑。当你打开你知道使用java的java项目时,文件中的干净代码将成为你的焦点。当你打开c#时,你知道它是C#等。
执行代码的java分支和c#分支。它更容易维护并保持清洁。
考虑一下你想升级环境的情况,为什么在你只想升级C#代码时浪费时间/金钱来重新编译Java代码等等!
你会在同一个文件中移植到php,ruby,perl,python等吗?
让程序员打开他们想要查看和使用的代码,单独的文件!
有些Java程序员在看到C#代码时可能会跳出窗口!想过吗? ;)
答案 1 :(得分:1)
在我看来,它更麻烦,因为:
答案 2 :(得分:1)
在构建中添加引导步骤,以便在编译之前提取所需的Java或C#代码。或者只是注释掉C#代码,如果你真的想要的话就是用Java工作。
答案 3 :(得分:0)
虽然您不保存任何文件,但这种方法的缺点是您失去了将项目模块化为不同语言的基本概念。 其次,大多数阅读代码的人都不会觉得这很简单,因为你发现在同一个文件之间切换不同的语言。 最后,你会浪费你的时间和资源一次又一次地重新编译完整的代码(甚至是java代码),尽管你只修改了C#代码,比如说。