标签: project-organization

C最佳实践项目组织

我想知道组织大型C项目的最佳实践是什么.它是一个专业项目,而不是一个开源的项目,可能存储在Git存储库中.应该如何分类?结构应该去哪里?应该何时使用附加到结构的函数与将结构作为参数的函数?

在布置项目中的文件方面,应该如何结合在一起?哪种命名约定最合适?

c project-organization

7
推荐指数
1
解决办法
6572
查看次数

组织使用多种语言的项目?

我目前正在开发一个包含perl,.NET,C/C++和Java组件的项目.这些组件是相互关联的,但不依赖于相同的发布计划.由于构建/测试环境要求非常不同,将它们全部集中到同一个/ bin/src/lib/etc/tests层次结构中有点笨拙.

在处理这种性质的项目时,在源代码管理中使用哪些好的组织层次结构?我目前倾向于每种语言都有自己的分支:

回购/ PROJECT1/perl的/主/ ...

回购/ PROJECT1/.NET /主/ ...

回购/ PROJECT1 /的Java /主/ ...

如果DID具有绑定的发布计划,您的建议层次结构将如何变化?

version-control multilingual project-organization

6
推荐指数
1
解决办法
736
查看次数

将Python源代码拆分到单独的目录中?

以下是我的公司“foo.com”使用的一些各种 Python 包:

com.foo.bar.web
com.foo.bar.lib
com.foo.zig.web
com.foo.zig.lib
com.foo.zig.lib.lib1
com.foo.zig.lib.lib2
Run Code Online (Sandbox Code Playgroud)

这是将源存储在磁盘上的传统方法:

pysrc/
  com/
    foo/
      bar/
        web/
        lib/
      zig/
        web/
        lib/
          lib1/
          lib2/

PYTHONPATH=pysrc
Run Code Online (Sandbox Code Playgroud)

但出于组织目的(不同的团队、不同的版本控制等),我们希望将它们存储如下:

bar/
  pysrc/
    com/
      foo/
        bar/
          web/
          lib/
zig/
  pysrc/
    com/
      foo/
        zig/
          web/
          lib/
            lib1/
            lib2/

PYTHONPATH=bar/pysrc:zig/pysrc
Run Code Online (Sandbox Code Playgroud)

问题是:

第二种组织方法有什么问题吗?

例如,如果我们import com.foo,Python 会在哪里寻找__init__.py

符号链接这些目录有意义吗?例如:

pysrc/
  com/
    foo/
      bar/ -> symlink to /bar/pysrc/com/foo/
      zig/ -> symlink to /zig/pysrc/com/foo/
Run Code Online (Sandbox Code Playgroud)

欢迎任何一般代码组织建议。

python import project-organization pythonpath

6
推荐指数
1
解决办法
2994
查看次数

我应该如何组织包括库在内的Android项目的源代码管理?

我需要帮助找出组织我的Android项目的最佳方法(或最佳实践).为简单起见,假设我的Android Eclipse工作区是C:\Android\Projects\.在该文件夹中,我喜欢从库中分离应用程序,我有两个其他文件夹,C:\Android\Projects\ApplicationsC:\Android\Projects\Components.

对于一个项目,我已经克隆从GitHub库到Components文件夹中,让我们说C:\Android\Projects\Componentes\SampleLib(这个文件夹里有两个文件夹TheLibTheLibExample).我的应用程序已创建C:\Android\Projects\Applications\MyTestApp.然后按照这些说明将库包含到应用程序中.

现在让我们说我想使用GitHub与开源社区分享我的应用程序.我将创建一个存储库并将所有内容从一个存储库中推送出去C:\Android\Projects\Applications\MyTestApp.

如果有人想分叉我的应用程序甚至帮助我,它将需要库来编译和运行它,这不包括在我的项目本身.该default.properties文件将有类似的东西android.library.reference.1=../Components/SampleLib/TheLib,有人需要手动克隆该库,他需要将它放在相同的相对路径,否则它会搞乱我的应用程序的源代码控制.

我能想到解决这个问题的唯一方法是组织我的工作区,如下所示:

C:\Android\Projects\Applications\MyTestApp\TheApp
C:\Android\Projects\Applications\MyTestApp\TheLib
C:\Android\Projects\Componentes\SampleLib
Run Code Online (Sandbox Code Playgroud)

我的存储库应该填充来自的内容C:\Android\Projects\Applications\MyTestApp\.

但是当库更新时会发生什么?我不能简单地拉出新的更改,我需要将它们复制到TheLib文件夹中.在之前的文件夹组织中,这不需要,因为我引用了原始克隆的存储库而不是副本.

那我该怎么办?我应该选择一个选项,让任何人都可以根据自己的需要处理我的项目处理库依赖关系,或者我应该选择第二个文件夹,并通过保持两个文件夹同步来为每个人提供更多工作,当原始文件从其中获取更改时库?

git version-control android github project-organization

6
推荐指数
1
解决办法
2963
查看次数

组织解决方案,项目和SVN

我想在SVN中建立一个关于目录结构的项目.我已经在SO上阅读了几个关于此问题的答案,但由于我是新手,所以大多数都很难理解.

我正在构建一个单独的库,其他几个不同的项目取决于:

我需要能够轻松导出MyLibrary(仅限标题和.lib)供第三方使用

MyLibrary1

  • 取决于外部库,应该能够管理这些库的不同版本!

MyLibrary2

  • 取决于外部图书馆fmod,glew,...

项目1,2,4,5,6 ......

  • 取决于MyLibrary1,2或两者
  • 每个项目都需要多个平台的版本(osx,windows ......)

我想知道一个很好的方法来组织这个,请记住我对这个很陌生 - 一个更迂腐的答案会有所帮助.例如,如果您编写类似/ src的内容,请解释应该进入的内容!我可以猜到,但我不确定=)

////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////

//编辑

我不能把它写成评论,所以这里说:@JN,感谢广泛的回复,我想澄清一些内容,我希望我理解你的意思:

root
    library foo
        /branches           // old versions of foo
        /tags               // releases of foo
        /trunk              // current version
            /build          // stuff required by makefiles
            /tools          // scripts to launch tests ect
            /data           // test data needed when running
            /output         // binaries, .exe files
            /dependencies   // libraries that foo needs
                /lib name
                    include
                    lib
            /docs           // documentation
            /releases       // generated …
Run Code Online (Sandbox Code Playgroud)

c++ svn project-organization visual-c++

6
推荐指数
1
解决办法
988
查看次数

用于多平台多语言项目的Golang代码组织

我正在为一个多平台项目寻找一个好的项目组织,其中包含用Go编写的多个组件.我知道http://golang.org/doc/code.html推荐的布局,但是布局建议似乎不符合我的要求.

项目组成部分是:

  • 服务器(用Go编写)
  • 客户端,跨平台(Go)
  • 库,在服务器和客户端之间共享(Go)
  • 更多客户(iOS,Android)

我的要求是:

  • 单个git存储库中的所有组件
  • 保持组件分离(例如,每个组件一个目录)
  • Go组件可以构建为多个子包

我目前的做法:

project/ (this is the repository root)
  server/
    server.go (package main)
    src/          
      server/
        package1/
          package1.go
        ...
  client/
    client.go (package main)
    src/
      client/
        package2/
          package2.go
        ...
  lib/
    src/
      lib/
         lib.go
         ...
  client-ios/
    ...
  client-android/
    ...
Run Code Online (Sandbox Code Playgroud)

要构建,我使用Makefile

  1. 将lib /复制到server /和client /
  2. 分别构建服务器/和客户端/,每次都将GOPATH设置到相应的目录.

它有效,但感觉非常笨重,与推荐的代码布局完全不同.

这是我正在考虑的替代方案:

project/ (this is the repository root)
  gospace/
    src/
      server/...
      client/...
      lib/...
  client-ios/
    ...
  client-android/
    ...
Run Code Online (Sandbox Code Playgroud)

有了这个布局,我有一个GOPATH(gospace /),不需要klunky Makefile.然而,组件不像第一替代方案那样整齐地分离(即,通过顶级目录).

我的问题:哪种项目布局最适合我的要求和Go约定和工具支持?有没有更好的选择,我还没有看到?

code-organization project-organization organization go

6
推荐指数
1
解决办法
2292
查看次数

将所有项目放在同一个主干中是个好主意吗?

我们理解默认和通常推荐的svn存储库组织,如果有多个项目,则是这样的:

root/projectA/(trunk, branches, tags)
root/projectB/(trunk, branches, tags)
...
Run Code Online (Sandbox Code Playgroud)

我们的项目有很多相互依赖性,这需要在它们之间大量使用svn:externals,考虑到我们不会引用内部项目,我们更愿意查看它们的源代码而不是使用二进制文件.

使用外部因素太多,在分支存储库时,同步更改可能会变成一种复杂且容易出错的体验,因此团队根本不相信这种解决方案.

因此,团队成员建议我们都认为这可能是一个更好的解决方案:将所有项目放在同一个主干中.

起初,我们认识到这种方法存在一些问题,但总的来说,我们认为这些问题是基于我们可能从未体验过的低位情况.

您是否看到我们对此解决方案可能遇到的一些严重问题?

svn project-organization

5
推荐指数
1
解决办法
475
查看次数

如何在Xcode中组织库项目的单元测试?

我还不是集成开发环境的粉丝,但我正试图克服我的偏见并学习Xcode.(Eclipse/CDT是下一个;当我去年尝试时,我无法让它为我工作,但这是一个单独的问题.)

我正在一个新项目中编写一些新代码,这个新项目将成为一个小型库的一部分.我也想对它进行单元测试.我如何向Xcode解释我正在构建一个(共享)库,但我也想在测试程序中使用它,从不在共享库中的单独源代码编译?

源代码:

  • atom.c
  • atom.h
  • 测试atom.c

制作文件:

  • libatom.dylib
  • 测试原子

我有atom.catom.h编译到库中.我只是不确定如何组织事情,以便我也可以建立test-atom与图书馆的链接.我假设当我对它进行排序时,为测试支持代码添加库,test-atom.c将是相对简单的 - 即使它还没有在Xcode控制之下.

FWIW,我主要在C而不是Objective C.工作.

xcode unit-testing project-organization

5
推荐指数
1
解决办法
2408
查看次数

如何使用抽象模型组织 Django 项目

我有几个模型:“文章、视频、博客帖子、新闻、商品”。每个都在他们自己的应用程序中。

它们基本上都是相同的模型,每个模型都有一些额外的字段。但每个共享大约 15 个字段。我正在使用抽象基类。我正在努力弄清楚我应该如何为此进行组织。我目前的设置是这样的:

apps/
    abstract_models.py
    abstract_templatetags.py
    abstract_forms.py
    articles/
        models.py
        ...
    videos/
        models.py
        ...
    blogs/
    ...
Run Code Online (Sandbox Code Playgroud)

虽然我知道这不是一个好方法,但我不确定将共享的所有信息放在哪里。我一直这样做,然后每个应用程序只是子类化 Form 或 Model 并进行本地修改。由于它们只是相对于整个画面的少量更改,我认为抽象类是要走的路,但我可能错了。

它们共享如此多的结构,但出于显而易见的原因,我希望将它们保留为单独的应用程序。但我想把它清理一下。

任何想法将不胜感激。

django project-organization django-models

5
推荐指数
1
解决办法
1928
查看次数

Azure DevOps 多个组织或多个项目

在尝试组织 Azure DevOps 时,我们正在尝试决定是否应该使用多个项目、组织。挑战在于我们正在容纳多个客户项目,每个项目都有自己的解决方案。选项是在我们自己的组织下创建多个组织(每个客户一个)或多个项目。MSFT似乎按照https://learn.microsoft.com/en-us/azure/devops/organizations/projects/about-projects?view=azure-devops帖子建议尽可能减少项目数量。我们在项目之间有大约相同的 10ppl 跳跃,但在某些情况下,只有一个子集可以访问,尽管这比在多客户设置中正确使用/组织存储库更不值得关注。

project project-organization azure azure-devops

5
推荐指数
1
解决办法
6196
查看次数