软件工程

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


9
问一个面试官,他们的开发团队最大的优点和缺点是一个坏主意吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我想知道在面试开发人员职位时问一个可能的雇主是否是一个好问题: 您的开发团队的最大优势和劣势是什么? 我们在面试时都会遇到这个问题,那为什么不回头问他们呢?我认为这是一个非常好的问题,因为我们可以了解团队,以及这种优势或劣势会如何影响我们,但我不想惹恼面试官。 在面试开发人员职位时,问这个问题有什么弊端吗?
14 interview 

4
我们应该重命名重载的方法吗?
假定包含以下方法的接口: Car find(long id); List<Car> find(String model); 像这样重命名它们更好吗? Car findById(long id); List findByModel(String model); 实际上,使用此API的任何开发人员都无需查看接口即可知道初始find()方法的可能参数。 所以我的问题更笼统:在代码中使用重载方法有什么好处,因为它会降低可读性?

5
负载测试:每秒如何生成请求?
我有一个运行在Zeroc-ICE上的服务器组件。当我想对其进行负载测试时,我认为使用并行库创建多个请求即可。但这最终以这种方式结束。从C#使用Parallel(Parallel.For)库显然更容易,但似乎并不能完全在同一瞬间并行生成所有内容。因此,它不是每秒创建N个请求的定义。我该怎么办?我想任何想先进行负载测试的人都会考虑这一点。 实际每秒实际创建N个请求的有效方法是什么? 另一个神话是关于并行编程。如果您通常在C#或.Net中使用并行编程模式,请告诉我们。想象一下,我有5个流程。如何将同时启动所有五个过程。这对我的资源消耗意味着什么?我已经尝试阅读了网上提供的许多材料,但是我收到的问题越来越多,而不仅仅是它们作为我的问题的答案。 我使用Parallel.For并创建了N个线程并测量了时间。然后,我使用Task.Factory.start尝试了同样的事情来枚举任务。测量的时间不同。那么使用它们之间到底有什么不同?什么时候应该使用相应的类?究竟是出于什么目的?我们经常有很多财富,但仅仅是我们不知道如何区分彼此。对我来说就是这种情况,无法找到为什么我不应该使用另一个。 我使用秒表类来衡量这些时间是最好的。在我对组件进行负载测试的情况下,测量响应时间的方式将是什么。秒表似乎对我来说是最好的解决方案。欢迎任何意见。 ps:有许多针对Web应用程序的负载测试工具。我的是服务器组件的自定义案例。我的问题更多是与每秒创建N个线程有关。 欢迎所有意见。只是不要以为它不是编程问题。当然是。任何想亲自进行QE知识的程序员,首先要亲自了解产品的性能,都应该振作起来。

5
如何选择要查看的代码?
我是一家小型软件公司的七个开发人员团队的一部分,我正在尝试介绍常规的组代码和设计评论。过去我们进行了一些审查,但它是零星的。我想使其变得更常规。 我已经阅读了Code Complete和其他类似的资源,他们谈论了如何进行代码审查的机制,但是我无法找到有关如何选择要审查的内容的最佳实践。我们的代码库已有八年的历史了,涵盖了多种语言,因此可以参考很多内容。 我想到了一些可能会影响选择的因素: 语言:C,Java,SQL,PL / SQL 代码年龄:新代码与旧代码 代码用法:常用代码与(有效)失效/很少使用的代码 代码重要性:关键代码与非关键代码 开发人员:初级开发人员代码与高级开发人员代码 我知道这不是绝对确定的问题,但是任何指导都是有用的。 一些与外围设备相关的问题: 代码审查方法(审查关键部分和新开发人员代码的想法) 我们应该尝试审查所有代码吗?


8
重复性日历任务应如何存储在数据库中?
这是一个用于微管理的小型个人项目。基本上,我将任务存储在如下所示的SQLite3数据库中: id INTEGER PRIMARY KEY AUTOINCREMENT label TEXT deadline INTEGER 因此,每个任务都有一个截止日期(截止日期),该截止日期存储为Unix时间戳。到目前为止,到目前为止,我可以进行诸如“明天:访问祖母”之类的条目,并以“ visit grandma”为标签创建新行,明天将转换为Unix截止日期。 现在,我想输入新的任务类型:例程-按时间模式重复的任务,例如“每天:清洁厨房”。如何存储或建模此类任务? 目前,我认为,对于需要每天执行的任务,要在表中生成具有相同标签的新行,并且截止日期字段将增加一天。在这种情况下,我需要在将来确定一个限制。例如,如果我每天创建一个例程,那么它将为剩余年份的每一天创建一个新行。 有没有更简单的方法可以做到这一点?我是否缺少一些明显的数据库设计原则?


4
通过使用单元测试超时来衡量方法的性能是一个好主意吗?
在有非功能性需求的项目中,该非功能性需求指定了特定操作的最长时间执行时间,QA必须在精确负载下使用精密硬件检查专用设备上此动作的性能,硬件和负载均在需求中指定。 另一方面,对源代码的一些错误更改可能会严重影响性能。在源代码到达源代码控制并由QA部门验证之前尽早注意到这种负面影响,这可能会因为QA部门报告问题而浪费时间,而开发人员稍后再修复它会造成损失。 为此,这是一个好主意: 要使用单元测试有花了执行相同action²时间的想法ñ倍, 要在C#中通过属性使用每次测试超时[TestMethod, Timeout(200)]? 我期望这种方法会出现几个问题: 从概念上讲,单元测试并非真正做到这一点:它们应仅测试代码的一小部分,仅此而已:既不检查功能需求,也不进行集成测试,也不进行性能测试。 考虑到这些测试不存在初始化和清除功能,或者它们太短而无法影响结果,Visual Studio中的单元测试超时是否真的可以衡量预期的结果? 用这种方法衡量性能很难看。在独立于硬件,负载等因素的任何计算机上运行基准测试,就像进行基准测试一样,表明一种数据库产品总是比另一种数据库产品更快。另一方面,我不希望这些单元测试是确定的结果,也不希望质量检查部门使用这些东西。这些单元测试将仅用于提供有关预期性能的一般概念,并且实质上是在提醒开发人员,他的最后修改破坏了某些内容,从而严重影响了性能。 对于这些测试,无法进行测试驱动开发(TDD)。首先,在开始实施代码之前它将如何失败? 性能测试太多将影响运行测试所需的时间,因此此方法仅限于短期操作。 考虑到这些问题,如果将此类单元测试与质量保证部门的实际性能指标结合使用,我仍然觉得很有趣。 我错了吗?还有其他问题使其完全不能使用单元测试吗? 如果我错了,那么在源代码到达源代码控制并由质量检查部门验证之前,警告开发人员该源代码的更改严重影响性能的正确方法是什么? ¹实际上,单元测试只能在具有相当硬件性能的开发人员PC上运行,从而缩小了永远无法通过性能测试的最快计算机与永远无法通过性能测试的最慢计算机之间的差距。 ²实际上,我的意思是一段相当短的代码,需要花费几毫秒来运行。

4
什么是客户端JavaScript开发的良好IDE?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我最近开始学习JavaScript,并且正在寻找一个好的JavaScript编辑器/ IDE。我在Google搜索中找到了数十个,但是如果有使用过这种IDE的经验的用户可以推荐一个,我将不胜感激。 我想要一个具有语法高亮显示功能的IDE ,可能需要IntelliSense以及对JavaScipt代码的调试支持。我是Windows 7用户,仅做客户端 JavaScript开发。 有什么建议么??

3
为什么HTML TextArea具有自己的HTML标签?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 <input id='input1' type='text'></input> <input id='input2' type='button'></input> <input id='input3' type='checkbox'><input> <textarea id='myTextArea'></textarea> 在HTML标记中,用户可以与页面进行交互的大多数地方都用<input>标签来表示。为什么textarea具有自己的标签,<textarea>而相反,例如,<input type='textarea'>
14 html 

4
是否应该坚持一致性而不是编程约定?
在设计类时,是否应该在行为习惯上优于常规编程实践?举一个具体的例子: 一个常见的约定是:如果一个类拥有一个对象(例如,它创建了一个对象),则它负责在对象完成后对其进行清理。.NET中的一个具体示例是,如果您的类拥有一个IDisposable对象,则应在其生命周期结束时对其进行处置。如果您不拥有它,请不要触摸它。 现在,如果我们看一下StreamWriter.NET 中的类,则可以在文档中找到在关闭/处置它时关闭基础流的信息。如果在StreamWriter编写器创建基础文件流并因此需要关闭它时通过传入文件名实例化的情况下这是必需的。但是,也可以传入作者也关闭的外部流。 这使我烦恼了很多次(是的,我知道您可以制作一个非关闭的包装器,但这不是重点),但是显然微软已经做出决定,无论来自何处,始终关闭流是更加一致的。 当我在一个类中遇到这种模式时,我通常会创建一个ownsFooBar标志,如果FooBar通过构造函数注入该标志,则将其设置为false;否则,将其设置为true。这样,当调用者显式传递实例时,将其清除的责任传递给了调用者。 现在我想知道一致性是否应该优于最佳实践(或者我的最佳实践不是那么好)吗?有反对意见吗? 编辑以澄清 “一致性”的意思是:类的一致行为总是获取所有权(并关闭流)与“最佳实践”相比,仅当创建对象或显式转移所有权时才获取对象的所有权。 例如,它令人眼花ying乱: 假设您有两个给定的类(来自某个第三方库),它们接受一个流以对其进行处理,例如创建和处理一些数据: public class DataProcessor { public Result ProcessData(Stream input) { using (var reader = new StreamReader(input)) { ... } } } public class DataSource { public void GetData(Stream output) { using (var writer = new StreamWriter(output)) { .... } } …
14 design  .net 

5
SQL Server的版本控制
我正在开始一个新项目,并使用SVN(带有Tortoise)作为我的版本控制系统。我想知道是否有可能使用同一系统来维护SQL Server数据库。 我想对我的表/函数/视图/ procs / triggers / etc进行版本控制。但不是我的数据,因为无论如何它们都将是测试数据。我不太确定该如何设置。我遇到了一些选择,但我想知道是否缺少任何我,是否有指导或其他帮助我开始使用它的东西。 我已经听说过Red Gate,但我正在寻找免费的东西(或至少非常便宜的东西)。我知道我总是可以自己写点东西,但我并不是真的想花时间在上面。 我遇到的一件事是放在一起称为ScriptDB4Svn的开源软件包。有人使用过吗?好吗?它可以做我需要做的事情吗,设置起来很简单吗?

2
SQL Server和Mongo可以一起使用吗?
我们有一个大型的面向新闻的网站,具有很高的网络流量。该体系结构是您经常看到的DB-回购层-服务层-Asp.Net MVC。我们一直看到的问题与读取性能有关。事实证明,从理论上讲,所有这些DDD域对象对于业务规则来说都是很棒的,但是在优化读取性能方面却变得更加艰辛。 作为一种解决方案,我正在考虑(对我们而言)全新的事物:使用noSQL。我想使用noSQL数据库存储在我们网站上显示的数据。我们无法摆脱我们的SQL Server(至少不会很快),但是在我看来,一个实际可行的步骤是将Mongo用作所有新开发的查询数据库。 我的问题是,它是否可以使用SQL Server作为您的记录和蒙戈作为查询数据库的数据库一起? 因此,当我们的一位编辑者更新记录时,数据将存储在SQL Server中。这是必要的,因为有太多的遗留代码无法在一夜之间重写。 但是,当网站上的查看者查看文章或文章列表时,我想利用Mongo与SQL Server的性能。为了使数据保持最新状态(例如15分钟或更短),SQL Server数据将需要刷新Mongo。RDBMS具有用于此类操作的复制工具,我想知道是否存在从SQL Server到Mongo的相同操作。Lync服务器,也许吗?
14 sql-server  nosql  cqrs  mongo 

1
多次调度与函数重载
我试图了解两者之间的区别(如果有)。 根据Wikipedia页面上的Multiple Dispatch,它是Function Overloading的同义词,但随后继续说: 用只有一次调度的语言,例如Java […] 这似乎是一个矛盾,因为Java确实支持函数重载。 那是什么呢?Multiple Dispatch与Function Overloading是否不同,或者该文章是否声称Java不支持Multible Dispatch是错误的?

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.