代码之家  ›  专栏  ›  技术社区  ›  trshiv

混合两种或两种以上语言(如Java和C++)时组织源代码库

  •  11
  • trshiv  · 技术社区  · 18 年前

    几天前我遇到了一个问题,当我不得不把C++文件引入java项目中。它首先需要测量Java进程的CPU使用率,然后决定使用JNI调用用C编写的本机库(Unix机器上的共享库)。问题是找到一个合适的位置将C文件放在源存储库中(顺便说一下Clearcase)它只包含Java文件。

    我想到了几个备选方案:

    (a) 创建一个单独的目录,将C文件(具体来说,一个.h文件和一个.C文件)放在源代码库的顶部,如:

    /vobs/myproduct/javasrc

    我不喜欢这样,因为我只有两个C文件,而且像这样在语言级别拆分源代码库似乎很奇怪。在C++和java中,大部分的项目都被写得差不多了,这可能没问题。

    (b) 将C文件放入使用它的Java包中。

    我在/vobs/myproduct/com/mycompany/myproduct/util/中有调用Java类,C文件也在其中。

    我也不喜欢这个,因为我认为C文件不属于Java包。

    更新:我没有任何计划使用任何C或C++在我的项目中,也许有些Jython,但是你永远不知道什么时候我的客户需要一个只能用C解决的特性,或者最好用C解决。

    7 回复  |  直到 9 年前
        1
  •  8
  •   Anders Sandvig    18 年前

    “我不喜欢这样,因为我只有两个C文件,像这样在语言级别拆分源代码库似乎很奇怪”

    为什么看起来很奇怪?考虑这个项目:

      project1\src\java
      project1\src\cpp
      project1\src\python
    

      project1\module1\src\java
      project1\module1\src\cpp
      project1\module2\src\java
      project1\module2\src\python
    

        2
  •  4
  •   Jim Kiley    18 年前

    Maven为web应用生成的默认布局为 src/main/java , src/test/java , src/main/resources 和 src/test/resources src/main/cpp 和 src/test/cpp 也对我来说,这似乎是一个足够体面的惯例。

        3
  •  1
  •   Ryan Thames    18 年前

    将它们保存在单独的文件夹中是个好主意。它比在Java包中搜索C文件更容易找到,而且它还允许将来添加更多C代码,而不必在以后移动代码。

        4
  •  0
  •   Linor    18 年前

    就我个人而言,我会把这两个概念分开,甚至可能是它们各自独立的项目,但那时候它们都是独立的东西,就像你不会把两个不同的概念放在同一个类中一样。当它们都触及同一个概念领域时,会变得更加模糊。当然,在构建代码时总是会出现问题,例如,是否可以将代码放在结构b)中,而无需使用各种技巧来编译代码?您是否计划在项目中使用更多的C,在这种情况下,如果您遵循相同的模式,C文件将分布在整个项目中。。。

        5
  •  0
  •   Jim Burger    18 年前

    就我个人而言,对于拆分语言解决方案,我会将它们保存在单独的项目或文件夹中。

        6
  •  0
  •   m_pGladiator    18 年前

    让我们使用不同的术语。有一种产品不是项目。该产品由Java工作区和C/C++工作区组成,每个工作区都可以从不同的IDE加载。最终,如果您使用同一个IDE,那么将只有一个工作区。 每个工作区由几个项目组成。每个项目都有自己的文件夹结构(src、bin、res、e.t.c)。所以,如果只有一个工作区,那么最好至少有一个Java和一个C/C++项目,每个项目都有不同的编译/运行/调试/输出/。。。设置。

    因此,我将使用:

    Product/Workspace(1)/JavaProject1/src 
    Product/Workspace(1)/JavaProject2/src 
    Product/Workspace(1 or 2)/CPPproject1/src 
    Product/Workspace(1 or 2)/CPPproject2/src ...
    

    这样,您最终可以为每个项目使用一个相同的文件夹结构,这更为一致。基本上,这只是多了一个抽象层次——将产品划分为不同的相关项目。

        7
  •  0
  •   Marcus Downing    18 年前

    在这种情况下,所讨论的文件不仅是一种不同的语言,而且还作为一个单独的程序运行,通过定义的接口进行交互。这意味着源文件可以作为单独的项目处理,因此可以保存在其他地方。

    这种情况在.NET项目中是不同的,这些项目在一个代码库中混合了C#和ASP.NET(例如)。在这种情况下,人们如何组织他们的代码?

    推荐文章