软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

2
存储库真正应该做什么?
我听说过很多存储库模式,但是我完全不了解存储库应该真正做什么。当我说“存储库应该真正做什么”时,我主要是在担心它应该提供哪些方法。例如,存储库应该真正提供CRUD方法,还是应该提供某种其他方法? 我的意思是,存储库应包含业务逻辑,还是应仅包含与数据存储进行通信并管理要保存或加载的实体的逻辑? 我还听说存储库是聚合的持久性单位。那怎么了 我不明白这在实践中是如何工作的。我认为我们应该只有一个IRepository包含CRUD方法的接口,然后对于任何实体,实现都将仅包含用于保存和从数据存储中检索此类的逻辑。

6
什么是“使用命名空间”污染?
我在看[这里]的Google编码指南,他们不建议您使用using namespace或namespace::function-如果我没有误解的话。 这也适用std吗?cout<<没有它是行不通的。本书,推荐相同。那么,如何去使用cout<<没有using namespace std;或std::cout<<? 推荐的方法是什么?std::cout<<?大多数C ++教科书都向初学者讲授错误的using namespace std;编码实践吗?
15 c++  coding-style 

3
MVC:模型和服务之间有什么区别?
为什么在某些框架中将逻辑层称为“模型”,而在某些框架中将其称为“服务”。它们是彼此不同还是只是命名约定不同? 更新1 我问的原因是因为在传统的MVC框架Zend Framework中,每个人都使用模型的概念。现在我正在学习AngularJS,似乎Model一词消失了,由service一词代替了。 我注意到的是,服务更像是可以反复使用的单例(例如:REST客户端),而模型则与MVC模式中来自控制器的数据操作更为相关。
15 mvc  model  service 

4
MVC中的实用程序类-ASP.NET
所以我今天想知道,您会将实用程序类放在ASP.NET MVC应用程序的什么位置?实用程序类是指可以静态的类,仅用于执行功能。就像一个类,以电子邮件地址,主题和正文作为参数来发送电子邮件。 我认为也许创建一个单独的文件夹和名称空间就足够了,但是我想让所有人都同意

5
当潜在利益相关者过多时,如何启动开发项目
我刚刚在大学里担任(唯一的)Web应用程序开发人员。 该学院有许多完全不同但编码很差的遗留系统。它们主要是用PHP内置的,它们处理诸如出勤,考试结果,评分等问题。 我的第一项工作是构建一个包含大量此类数据的系统,该系统目前驻留在各种数据库中,而没有任何友好的API可以将其提取出来(现有系统使用普通PHP编码,没有数据和视图的分离)有了一个新的平台来记录有关学生的牧草信息,并以一种有用的方式将其呈现给教师和高级职员,以便他们可以快速应对学生的问题。 在我们的第一次会议上,有18个人!没有代表多数的明确领导者或声音。没有可识别的客户。这次会议从教师的次要功能的详细实现思想转变为关于是否应使用Excel电子表格进行数据输入的争论! 可以想象,我的头在最后旋转。我实际上有很多好主意,但是我听不见。在我加入营销机构开发团队之前,这对我来说是一个非常新的角色。我们有明确定义的角色:项目经理,客户,设计师,开发人员。 我想知道是否有经验丰富的开发人员或管理人员可以为我提供一些指导,说明如何将我的同事们带入一个类似于项目团队的项目。是敏捷之路吗?您将如何处理所有不同的声音?显然,某些过程需要非常迅速地落实到位,我只是不确定那是什么。

1
科学计算库的单元测试
我以前在单元测试中有过一些经验,我称之为(不是贬义)经典的软件工程项目:MVC,带有用户GUI,数据库,中间层的业务逻辑等。现在,我我用C#编写了一个科学计算库(是的,我知道C#太慢了,使用C,不要重新发明轮子,所有这些,但是我们有很多人在C#中从事科学计算,我们有点需要)。就软件开发行业而言,这是一个小项目,因为我主要是自己写这篇文章,有时是在一些同事的帮助下编写的。另外,我并没有为此获得报酬,最重要的是,这是一个学术项目。我的意思是,我希望它有一天能达到专业水平,因为我正计划开源。 无论如何,该项目正在变得越来越庞大(大约18,000行代码,对于一个人的项目而言,我认为这是很大的),而且它也变得一发不可收拾。我正在使用git进行源代码控制,我认为我还不错,但是我正在像老派一样进行测试,我的意思是编写编写测试系统大部分内容的完整控制台应用程序,主要是因为我不知道如何在这种情况下进行单元测试,尽管我认为那是我应该做的。问题在于该库主要包含算法,例如图算法,分类器,数值解算器,随机分布等。我只是不知道如何为每种算法指定微小的测试用例,因为其中很多是随机的,我不知道如何验证正确性。例如,对于分类,有一些指标,例如精度和召回率,但是这些指标对于比较两种算法比判断一种算法更好。那么,如何在这里定义正确性? 最后还有性能问题。我知道它是一套完全不同的测试,但是性能是科学工具的重要功能之一,而不是用户满意度或其他软件工程指标。 我最大的问题之一是数据结构。我可以针对kd-tree进行的唯一测试是压力测试:插入许多随机向量,然后执行许多随机查询,然后与朴素的线性搜索进行比较。性能相同。使用数值优化器,我可以测试基准功能,但是再次,这是压力测试。我不认为这些测试可以归类为单元测试,最重要的是,它们不能连续运行,因为其中大多数都很繁重。但是我也认为这些测试需要完成,我不能只插入两个元素,弹出根,是的,它适用于0-1-n的情况。 那么,这种软件的(单元)测试方法是什么(如果有)?以及如何围绕代码-构建-提交-集成周期组织单元测试和繁重的单元测试?
15 c#  unit-testing 

3
可伸缩的布隆过滤器如何工作?
我正在阅读可伸缩的bloom过滤器,但无法理解每次组成的bloom过滤器是如何填充的,都添加了一个更大尺寸的新bloom过滤器。 不能查找最初创建的过滤器中有助于设置位的元素。我可能对此理解不正确? 我确实了解基本的布隆过滤器。但是,我无法绕过动态Bloom过滤器。

1
在{}中创建对象参数?
我正在尝试从书中解码一段代码: List<Person> people = new List<Person>() { new Person {FirstName="Homer",LastName="Simpson",Age=47}, new Person {FirstName="Marge",LastName="Simpson",Age=45} }; Person只是他们制作的一个简单类,其中包含许多字段:名称,姓氏等。 我不明白的是,我们不是将参数发送到非花括号中的Person的构造函数吗?我尝试复制此代码,但似乎没有成功,有人吗? 感谢您的输入。
15 c# 

7
x86汇编中NOP指令和align语句的目的
自从我上一次组装课以来已经有一年左右的时间了。在该课程中,我们将MASM与Irvine库一起使用,以使其易于编程。 在我们完成了大多数指令之后,他说NOP指令实际上什么也不做,不用担心使用它。无论如何,这大约是期中考试,他有一些示例代码无法正常运行,因此他告诉我们添加一条NOP指令,它可以正常工作。我问我下课后为什么做,实际上做了什么,他说他不知道。 有人知道吗
15 assembly  x86 

5
如何使用纯PHP构建模板系统?
我正在阅读关于stackoverflow的这个问题: /programming/104516/calling-php-functions-within-heredoc-strings 并且接受的答案说要做像这样的纯PHP模板: template.php: <html> <头> <title> <?= $ title?> </ title> </ head> <身体> <?= getContent()?> </ body> </ html> index.php: <?php $ title ='演示标题'; 函数getContent(){ 返回'<p> Hello World!</ p>'; } include('template.php'); ?> 对我来说,以上内容在某种意义上来说并不是很好的结构,即template.php依赖于其他脚本中定义的变量。而且您在执行操作时使用include()执行代码include('template.php')(与使用include()包含未立即执行的类或函数相反)。 我觉得更好的方法是将模板包装在函数中: template.php: <?php 功能模板($ title,$ content){ ob_start(); ?> <html> <头> <title> <?= $ title?> </ …
15 php  templates 

4
在多台机器上使用Git
这听起来可能有点奇怪,但是我想知道一种以某种方式联网的多台机器在Git中工作的好方法。在我看来,我有两个选择,并且我可以看到双方的好处: 使用git本身进行共享,每台机器都有自己的存储库,您必须在它们之间进行获取。 即使另一台计算机处于脱机状态,您也可以在其中任何一台计算机上工作。我认为这本身就很大。 使用在计算机之间通过网络共享的一个存储库。 每次切换机器时都不需要执行git pull,因为您的代码始终是最新的。 不必担心您忘记了从其他非托管计算机中推送代码的机会,因为您正在该计算机上处​​理文件共享,因此现在无法访问该代码。 我的直觉是,每个人通常都选择第一种选择。但是我看到的缺点是,您可能无法始终能够从其他计算机访问代码,而且我当然也不想每天结束时将所有WIP分支都推送到github。我也不想一直把计算机留在原处,这样我就可以直接从它们中获取信息。最后一点是,所有使多个分支保持最新状态的git命令都可能很乏味。 在这种情况下是否有第三个处理方法?也许有一些第三方工具可以帮助简化此过程?如果您定期处理这种情况,您有何建议?
15 git  workflows  dvcs 

4
“状态”的定义
在状态变量或状态机中为新的(以前是非)程序员定义“状态”的好方法是什么?有什么好的方法可以解释为什么这个概念对编写软件有用?通常在开始编程课程或书本中明确教过国家概念吗?


10
如何说服队友使用TDD [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我是团队中唯一使用TDD的人。如何使他们使用它? 我很烦恼,当我退出时,某人的代码会破坏我的测试,而我是必须修复它们的人。 使用github,fork和pull请求是否可以解决此问题,以便他们需要在接受pull之前通过测试? 我不是项目经理,我似乎无法说服她使用它。

5
什么是延迟回调?
我了解回调的概念,在回调中,我将一个函数传递给另一个函数,然后该函数随便使用提供的函数。 即使在谷歌搜索之后,我仍在努力理解延迟的回调。 有人可以提供简单的解释吗?我使用Ruby编程,但也了解C / C ++,但最重要的是,我是一位经验丰富的汇编语言程序员。所以我想知道这是否有点像一堆被弹出的回调地址?我希望学习jquery或node.js,而这些延迟的回调似乎对两者都是必不可少的。我了解基本的线程处理原理(尽管互斥对象使我的头部受伤;)
15 jquery  node.js 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.