有人可以解释软件设计和软件架构之间的区别吗?
进一步来说; 如果你告诉别人告诉你"设计" - 你期望他们出现什么?"架构"也是如此.
我目前的理解是:
如我错了请纠正我.我已经提到维基百科有关于http://en.wikipedia.org/wiki/Software_design和http://en.wikipedia.org/wiki/Software_architecture的文章,但我不确定我是否正确理解它们.
使用git子模块和子树之间有什么概念上的区别?
每种情况的典型情况是什么?
我不清楚以下是什么意思(来自git submodule update docs):
...将使子模块HEAD分离,除非
--rebase或--merge指定...
怎么--rebase/ --merge改变事情?
我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).
我的意思是,除了它的义务名称(标准模板库)......
C++最初的目的是将OOP概念呈现给C.即:您可以基于其类和类层次结构来判断特定实体可以做什么和不可行(不管它是如何做的).由于多重继承的问题,以及C++以某种笨拙的方式支持接口的概念(与java等相比),某些能力组合更难以这种方式描述,但它存在(并且可能是改善).
然后模板与STL一起发挥作用.STL似乎采用了经典的OOP概念,并使用模板代替了它们.
在使用模板来概括类型的情况之间应该有区别,其中类型自身与模板的操作无关(例如,容器).有一个vector<int>完美的感觉.
但是,在许多其他情况下(迭代器和算法),模板化类型应该遵循"概念"(输入迭代器,前向迭代器等等),其中概念的实际细节完全由模板的实现定义函数/类,而不是与模板一起使用的类的类,这是对OOP的一种反对使用.
例如,您可以告诉函数:
void MyFunc(ForwardIterator<...> *I);
Run Code Online (Sandbox Code Playgroud)
更新:由于在原始问题中不清楚,因此ForwardIterator可以自行模板化以允许任何ForwardIterator类型.相反,将ForwardIterator作为一个概念.
只需通过查看其定义来预期转发迭代器,您需要查看实现或文档:
template <typename Type> void MyFunc(Type *I);
Run Code Online (Sandbox Code Playgroud)
我可以支持使用模板的两个声明:通过为每个使用的类型定制编译模板,而不是使用vtable,可以提高编译代码的效率.并且模板可以与本机类型一起使用.
但是,我正在寻找一个更为深刻的理由,为什么放弃传统的OOP而不是模仿STL呢?(假设你读到那么远:P)
我project_dir/vendor/submodule_one每次运行时git status都会在项目中添加一个子模块modified: vendor/submodule_one (new commits).
我的问题是解决这个问题的最佳方法是什么?我是否将vendor/submodule_one-folder 添加到my中,.gitignore因为我的主项目不应该知道我的子模块的细节?
或者当我更改并提交对子模块的更改时,我是否还需要在我的主项目中进行提交?
刚刚开始使用子模块,除了设置它们之外似乎找不到太多信息.
这是一个经常被问到的问题,双方都有意见.赞成的人会争辩说:
另一方面,
根据我的经验,架构师不应该花费大量时间编写代码,但必须主要通过主要的开发人员沟通,审查和站立来与代码库保持联系.如果您花费大量时间进行编码,则会忽视高级别问题,并无法有效管理技术风险.
Git项目中包含第二个项目,其内容正在独立工作.
子模块不能用于较小的子模块,因为当用户尝试克隆或下载"父"时,甚至必须包含子项目.
不能使用子树合并,因为正在积极开发子项目,并且子树合并使得将这些更新合并回原始项目非常困难.
我被告知这个解决方案在SVN世界中被称为"供应商分支",并且它在Git中是如此简单,以至于甚至不需要寻址.网上有很多半生不熟的教程.
尽管如此,我似乎无法让它发挥作用.
有人可以(非常好吗?)解释我如何创建一个结构,一个项目存在于另一个项目中,并且可以从同一个工作目录开发和更新.理想情况下[或者更确切地说:如果不支持则非常重要]当客户端尝试下载"父"项目时,应该自动给他最新版本的子项目.
请不要向我解释我应该如何使用子模块或子树合并甚至SVN:Externals.这个线程是以下SO线程的产物,如果在那里错过了某些东西,请把它贴在那里.这个主题试图了解如何供应商分支机构,以及更长,更清晰,更笨拙的解释,我收到的解释会更快乐.
我希望将Git作为我雇主(250人)公司的主要来源控制.在继续讨论之前,我想回答以下问题.
Git是否有任何特定的最大文件大小限制可以处理?如果是这样,它是什么?
Git推荐的最大存储库大小是多少?这有助于我确定我应该在存储库中设置的内务处理.
我有一些Java程序,现在我想知道它是否是模块化的,如果它是模块化的,那么在多大程度上,因为模块化永远不能是二进制术语,即0或1.我如何确定特定代码是模块化的在很大程度上.我想知道如何使代码更加模块化?
git ×5
architecture ×2
branch ×1
c++ ×1
definition ×1
git-subtree ×1
go ×1
java ×1
modularity ×1
module ×1
oop ×1
osgi ×1
project ×1
stl ×1
templates ×1