我想知道组织大型C项目的最佳实践是什么.它是一个专业项目,而不是一个开源的项目,可能存储在Git存储库中.应该如何分类?结构应该去哪里?应该何时使用附加到结构的函数与将结构作为参数的函数?
在布置项目中的文件方面,应该如何结合在一起?哪种命名约定最合适?
我目前正在开发一个包含perl,.NET,C/C++和Java组件的项目.这些组件是相互关联的,但不依赖于相同的发布计划.由于构建/测试环境要求非常不同,将它们全部集中到同一个/ bin/src/lib/etc/tests层次结构中有点笨拙.
在处理这种性质的项目时,在源代码管理中使用哪些好的组织层次结构?我目前倾向于每种语言都有自己的分支:
回购/ PROJECT1/perl的/主/ ...
回购/ PROJECT1/.NET /主/ ...
回购/ PROJECT1 /的Java /主/ ...
如果DID具有绑定的发布计划,您的建议层次结构将如何变化?
以下是我的公司“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)
欢迎任何一般代码组织建议。
我需要帮助找出组织我的Android项目的最佳方法(或最佳实践).为简单起见,假设我的Android Eclipse工作区是C:\Android\Projects\.在该文件夹中,我喜欢从库中分离应用程序,我有两个其他文件夹,C:\Android\Projects\Applications和C:\Android\Projects\Components.
对于一个项目,我已经克隆从GitHub库到Components文件夹中,让我们说C:\Android\Projects\Componentes\SampleLib(这个文件夹里有两个文件夹TheLib和TheLibExample).我的应用程序已创建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文件夹中.在之前的文件夹组织中,这不需要,因为我引用了原始克隆的存储库而不是副本.
那我该怎么办?我应该选择一个选项,让任何人都可以根据自己的需要处理我的项目处理库依赖关系,或者我应该选择第二个文件夹,并通过保持两个文件夹同步来为每个人提供更多工作,当原始文件从其中获取更改时库?
我想在SVN中建立一个关于目录结构的项目.我已经在SO上阅读了几个关于此问题的答案,但由于我是新手,所以大多数都很难理解.
我正在构建一个单独的库,其他几个不同的项目取决于:
我需要能够轻松导出MyLibrary(仅限标题和.lib)供第三方使用
MyLibrary1
MyLibrary2
项目1,2,4,5,6 ......
我想知道一个很好的方法来组织这个,请记住我对这个很陌生 - 一个更迂腐的答案会有所帮助.例如,如果您编写类似/ 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) 我正在为一个多平台项目寻找一个好的项目组织,其中包含用Go编写的多个组件.我知道http://golang.org/doc/code.html推荐的布局,但是布局建议似乎不符合我的要求.
项目组成部分是:
我的要求是:
我目前的做法:
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
它有效,但感觉非常笨重,与推荐的代码布局完全不同.
这是我正在考虑的替代方案:
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约定和工具支持?有没有更好的选择,我还没有看到?
我们理解默认和通常推荐的svn存储库组织,如果有多个项目,则是这样的:
root/projectA/(trunk, branches, tags)
root/projectB/(trunk, branches, tags)
...
Run Code Online (Sandbox Code Playgroud)
我们的项目有很多相互依赖性,这需要在它们之间大量使用svn:externals,考虑到我们不会引用内部项目,我们更愿意查看它们的源代码而不是使用二进制文件.
使用外部因素太多,在分支存储库时,同步更改可能会变成一种复杂且容易出错的体验,因此团队根本不相信这种解决方案.
因此,团队成员建议我们都认为这可能是一个更好的解决方案:将所有项目放在同一个主干中.
起初,我们认识到这种方法存在一些问题,但总的来说,我们认为这些问题是基于我们可能从未体验过的低位情况.
您是否看到我们对此解决方案可能遇到的一些严重问题?
我还不是集成开发环境的粉丝,但我正试图克服我的偏见并学习Xcode.(Eclipse/CDT是下一个;当我去年尝试时,我无法让它为我工作,但这是一个单独的问题.)
我正在一个新项目中编写一些新代码,这个新项目将成为一个小型库的一部分.我也想对它进行单元测试.我如何向Xcode解释我正在构建一个(共享)库,但我也想在测试程序中使用它,从不在共享库中的单独源代码编译?
源代码:
制作文件:
我有atom.c和atom.h编译到库中.我只是不确定如何组织事情,以便我也可以建立test-atom与图书馆的链接.我假设当我对它进行排序时,为测试支持代码添加库,test-atom.c将是相对简单的 - 即使它还没有在Xcode控制之下.
FWIW,我主要在C而不是Objective C.工作.
我有几个模型:“文章、视频、博客帖子、新闻、商品”。每个都在他们自己的应用程序中。
它们基本上都是相同的模型,每个模型都有一些额外的字段。但每个共享大约 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 并进行本地修改。由于它们只是相对于整个画面的少量更改,我认为抽象类是要走的路,但我可能错了。
它们共享如此多的结构,但出于显而易见的原因,我希望将它们保留为单独的应用程序。但我想把它清理一下。
任何想法将不胜感激。
在尝试组织 Azure DevOps 时,我们正在尝试决定是否应该使用多个项目、组织。挑战在于我们正在容纳多个客户项目,每个项目都有自己的解决方案。选项是在我们自己的组织下创建多个组织(每个客户一个)或多个项目。MSFT似乎按照https://learn.microsoft.com/en-us/azure/devops/organizations/projects/about-projects?view=azure-devops帖子建议尽可能减少项目数量。我们在项目之间有大约相同的 10ppl 跳跃,但在某些情况下,只有一个子集可以访问,尽管这比在多客户设置中正确使用/组织存储库更不值得关注。
svn ×2
android ×1
azure ×1
azure-devops ×1
c ×1
c++ ×1
django ×1
git ×1
github ×1
go ×1
import ×1
multilingual ×1
organization ×1
project ×1
python ×1
pythonpath ×1
unit-testing ×1
visual-c++ ×1
xcode ×1