软件工程

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

2
为Maven构建Git存储库的最佳方法
我需要一些有关如何在Git中构建项目的建议。我们使用Java,而Maven是我们的构建工具。Maven kinda假定您所有项目最终都有一个共同的祖先。当事情没有完全按照Apache基金会设置项目的方式进行设置时,Maven可能也是真正的戏剧女王(使用发行插件的任何人都可能知道我在说什么)。 我们想要一个用于控制插件版本和构建配置(仓库配置,要构建的工件,命名约定,插件版本等)的顶级父pom。Maven希望我们所有的IT项目都在该主项目的子文件夹中。这意味着该组织需要进行大量的Git回购。 这将导致非常嘈杂的环境。如果有两个团队从事不相关的项目,那么他们将不得不不断地从另一个团队引入合并。理想情况下,我希望每个项目有一个仓库。 但是,这种情况与Maven的极其分层的模型存在冲突,后者要求子项目是子文件夹。 我需要一些有关人们如何协调这两种模型的建议...谢谢!

4
了解C / C ++中的函数调用堆栈框架吗?
我试图了解如何构建堆栈框架以及哪些变量(参数)以什么顺序被压入堆栈?一些搜索结果表明,C / C ++编译器根据函数内执行的操作进行决策。例如,如果假定该函数只是将传入的int值加1(类似于++运算符)并返回它,则它将把该函数的所有参数和局部变量放入寄存器中。 我想知道哪些寄存器用于返回或按值传递参数。引用如何返回?编译器如何在eax,ebx,ecx和edx之间进行选择? 我需要了解什么才能了解​​函数调用期间如何使用,构建和销毁寄存器,堆栈和堆引用?
19 c++  c  compiler  stack 

4
为什么我们需要async关键字?
我刚开始在.Net 4.5中开始使用异步/等待。我最初好奇的一件事是,为什么async关键字是必需的?我读到的解释是,它是一个标记,因此编译器知道一个方法在等待。但是似乎编译器应该能够在没有关键字的情况下解决问题。那还有什么作用呢?
19 c#  .net 

7
我应该为数据传输对象创建接口吗?
为数据传输对象创建接口是一个好主意还是一个坏主意?假定对象通常是可变的。 尽管我的示例是使用Java编写的,但它应适用于具有类似概念的任何其他语言。 interface DataTransferObject { String getName(); void setName(String name); } class RealDataTransferObject implements DataTransferObject { String name; String getName() { return name; } void setName(String name) { this.name = name; } } 当然,这是一个简化的示例,在现实生活中可能会有更多的领域。

6
在电子商务网站中将并发管理到篮子的最佳实践
管理两个客户同时添加库存仅为1个产品的情况的最佳实践是什么? 必须在购物篮的代码中进行检查,以避免这2个客户之一添加相同的产品? 还是必须在付款阶段执行此检查,例如进行第二次查询以确认相关产品仍在库存中(即并发客户尚未购买的产品)?

6
我真的需要一个单元测试框架吗?
目前,我的工作是为C ++应用程序提供大量的单元测试。但是,我们不使用单元测试框架。他们只是利用了一个C宏,它基本上包装了一个断言和一个cout。就像是: VERIFY(cond) if (!(cond)) {std::cout << "unit test failed at " << __FILE__ << "," << __LINE__; asserst(false)} 然后,我们只需为每个测试创建函数,例如 void CheckBehaviorYWhenXHappens() { // a bunch of code to run the test // VERIFY(blah != blah2); // more VERIFY's as needed } 我们的CI服务器会选择“单元测试失败”,并且构建失败,并通过电子邮件将消息发送给开发人员。 如果我们有重复的设置代码,我们可以像在生产中使用的任何其他重复代码一样简单地对其进行重构。我们将其包装在辅助函数的后面,使一些测试类包装设置常用的场景。 我知道那里有CppUnit和boost单元测试之类的框架。我想知道这些增加了什么价值?我想念这些带来的好处吗?我可以从中受益吗?我不愿意添加一个依赖项,除非它增加了实际价值,尤其是因为看起来我们拥有的东西简直太简单了并且运作良好。

8
C ++成为好友还是不成为好友
我在大学这个学期的C ++课程中有一个面向对象的编程,我们正在学习有关朋友函数的知识。 我本能地讨厌它们绕过封装和数据隐藏所提供的安全性的能力,我在互联网上读了几篇文章,有些人认为这是一个合法使用的好主意。 OOP专家会对C ++中的好友功能怎么说?我应该浏览一下还是应该了解更多?

4
为什么大多数语言都提供最小堆而不是最大堆实现?
我只是注意到了什么,我想知道是否有任何原因。除了C ++(std :: priority_queue是最大堆)之外,我不知道其他提供最大堆的语言。 Python的heapq模块在列表顶部实现了一个二进制min-heap。 Java的库包含一个PriorityQueue类,该类实现了一个最小优先级队列。 Go的库包含一个container / heap模块,该模块在任何兼容的数据结构之上实现了min-heap。 苹果公司的Core Foundation框架包含一个CFBinaryHeap结构,该结构实现了最小堆。 我发现最大堆比最小堆更直观,而且从技术上讲,我认为实现差异只是更改比较运算符的问题。有什么真正的原因吗?大多数应用程序需要最小而不是最大堆吗?提前致谢

8
在第一个错误之后,您是否阅读C或C ++编译错误?
我从来不明白为什么C和C ++编译器会尝试从错误中恢复并继续解析。几乎总是,第一个错误会生成一系列伪错误,这些错误会在第一个错误修复后立即消失。经过几年的经验,我只是停止查看除每个文件的第一个错误以外的任何错误。我重新运行编译器,然后再次执行该操作,直到没有更多错误为止。这是常见的做法吗?

17
为什么我们都还没有进行模型驱动的开发?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我是模型驱动开发的忠实拥护者,我认为它有可能提高生产率,质量和可预测性。当查看MetaEdit时,结果是惊人的。荷兰的Mendix成长非常迅速,并取得了不错的成绩。 我也知道有很多问题 生成器,模板和框架的版本控制 不适用于模型驱动开发的项目(重复次数不足) 更高的风险(当第一个项目失败时,您得到的结果要少于传统开发中得到的结果) 等等 但是,这些问题似乎仍然可以解决,其收益应超过所需的努力。 问题:您认为哪些最大的问题使您甚至没有考虑模型驱动的开发? 我想将这些答案不仅用于我自己的理解,而且还可以用作我计划编写的一系列内部文章的可能来源。


4
在C#中真正使用过指针吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 在C#中编码时,使用指针是一个好选择还是必须选择的情况是什么?我说的是不安全的指针。
19 c#  pointers 

6
使用按位运算的优点是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 在阅读了最新的CodeProject时事通讯之后,我发现了有关按位运算的这篇文章。它使阅读有趣,我当然可以看到检查整数是偶数还是奇数的好处,但是测试是否设置了第n位?这样做的好处可能是什么?


3
我应该在Docker映像中包含测试吗?
关于测试,我可以想到两个选择: 将测试和应用程序放在一张图中。 在图像中仅包含应用程序代码。创建一个特定于测试的容器,该容器在主映像之后构建并向其添加一些层(测试代码,依赖项等)。 使用第一个选项,我可以测试容器并按照测试的要求完全运送它。明显的缺点是不必要的代码(以及潜在的测试数据)将包含在图像中。 使用第二种选项时,出厂的图像与测试的图像不太相同。 两者看起来都是错误的策略。有没有第三种更好的策略?

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.