相关疑难解决方法(0)

软件设计与软件架构

有人可以解释软件设计和软件架构之间的区别吗?

进一步来说; 如果你告诉别人告诉你"设计" - 你期望他们出现什么?"架构"也是如此.

我目前的理解是:

  • 设计:特定模块/系统部分的UML图/流程图/简单线框(用于UI)
  • 架构:组件图(显示系统的不同模块如何与其他系统和其他系统通信),要使用的语言,模式......?

如我错了请纠正我.我已经提到维基百科有关于http://en.wikipedia.org/wiki/Software_designhttp://en.wikipedia.org/wiki/Software_architecture的文章,但我不确定我是否正确理解它们.

architecture definition

342
推荐指数
11
解决办法
22万
查看次数

git子模块和子树之间的差异

使用git子模块和子树之间有什么概念上的区别?

每种情况的典型情况是什么?

git git-submodules git-subtree

269
推荐指数
6
解决办法
7万
查看次数

git子模块更新

我不清楚以下是什么意思(来自git submodule update docs):

...将使子模块HEAD分离,除非--rebase--merge指定...

怎么--rebase/ --merge改变事情?

我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).

  • 从这些子模块中,我可以创建分支/修改并使用推/拉,就像我在常规回购中一样,或者有什么需要谨慎的吗?
  • 我如何将子模块引用的提交从say(tagged)1.0提升到1.1(即使原始repo的头部已经是2.0),或者选择使用哪个分支的提交?

git git-submodules

233
推荐指数
4
解决办法
23万
查看次数

为什么C++ STL基于模板如此重要?(而不是*接口*)

我的意思是,除了它的义务名称(标准模板库)......

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)

c++ oop templates stl

210
推荐指数
9
解决办法
3万
查看次数

布局Go项目的合理方法是什么?

我有一个开始变得更加复杂的go项目,并希望以减轻痛苦的方式放置文件系统.

有什么有意义的好例子吗?

project go

108
推荐指数
2
解决办法
4万
查看次数

你忽略.gitignore中的git子模块还是将它提交给你的repo?

project_dir/vendor/submodule_one每次运行时git status都会在项目中添加一个子模块modified: vendor/submodule_one (new commits).

我的问题是解决这个问题的最佳方法是什么?我是否将vendor/submodule_one-folder 添加到my中,.gitignore因为我的主项目不应该知道我的子模块的细节?

或者当我更改并提交对子模块的更改时,我是否还需要在我的主项目中进行提交?

刚刚开始使用子模块,除了设置它们之外似乎找不到太多信息.

git

78
推荐指数
3
解决办法
4万
查看次数

应用程序架构师应该编写代码吗

这是一个经常被问到的问题,双方都有意见.赞成的人会争辩说:

  • 要为编码器设计系统,您必须了解如何编码(并进行编码)
  • 如果不了解地面发生的情况,就无法设计系统
  • 架构不仅涉及宽中风设计,还涉及适应代码级别不断变化的需求

另一方面,

  • 架构是一个高级角色,不应该关注实现细节
  • 编码是一种详细的,低调的功能,与风险管理,建筑的广阔视野不一致
  • 架构是关于技术风险管理而不是实施
  • 建筑是关于领导力的.从后面领导很难

根据我的经验,架构师不应该花费大量时间编写代码,但必须主要通过主要的开发人员沟通,审查和站立来与代码库保持联系.如果您花费大量时间进行编码,则会忽视高级别问题,并无法有效管理技术风险.

architecture

45
推荐指数
10
解决办法
1万
查看次数

供应商分支在Git

Git项目中包含第二个项目,其内容正在独立工作.

子模块不能用于较小的子模块,因为当用户尝试克隆或下载"父"时,甚至必须包含子项目.

不能使用子树合并,因为正在积极开发子项目,并且子树合并使得将这些更新合并回原始项目非常困难.

我被告知这个解决方案在SVN世界中被称为"供应商分支",并且它在Git中是如此简单,以至于甚至不需要寻址.网上有很多半生不熟的教程.

尽管如此,我似乎无法让它发挥作用.

有人可以(非常好吗?)解释我如何创建一个结构,一个项目存在于另一个项目中,并且可以从同一个工作目录开发和更新.理想情况下[或者更确切地说:如果不支持则非常重要]当客户端尝试下载"父"项目时,应该自动给他最新版本的子项目.

请不要向我解释我应该如何使用子模块或子树合并甚至SVN:Externals.这个线程是以下SO线程的产物,如果在那里错过了某些东西,请把它贴在那里.这个主题试图了解如何供应商分支机构,以及更长,更清晰,更笨拙的解释,我收到的解释会更快乐.

git version-control branch vendor-branch

29
推荐指数
2
解决办法
2万
查看次数

Git中的最大文件大小和最大存储库大小?

我希望将Git作为我雇主(250人)公司的主要来源控制.在继续讨论之前,我想回答以下问题.

  1. Git是否有任何特定的最大文件大小限制可以处理?如果是这样,它是什么?

  2. Git推荐的最大存储库大小是多少?这有助于我确定我应该在存储库中设置的内务处理.

git

28
推荐指数
2
解决办法
5万
查看次数

如何使代码模块化?

我有一些Java程序,现在我想知道它是否是模块化的,如果它是模块化的,那么在多大程度上,因为模块化永远不能是二进制术语,即0或1.我如何确定特定代码是模块化的在很大程度上.我想知道如何使代码更加模块化?

java osgi modularity module

24
推荐指数
3
解决办法
4万
查看次数