软件工程

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


16
如何减少调试时间?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 遵循帕累托规则,程序员仅将20%的时间用于真正有用的事情。 我花了80%的时间进行调试,修复一些小问题,以使所有工作正常进行。 有没有办法花费更少的时间进行调试?

2
随着固态硬盘的问世,B树和其他数据结构会过时吗?
如今,许多(也许是最多?)数据库应用程序都使用B树和变体来存储数据,因为这种数据结构优化了硬盘上的读取,写入和查找操作(这些操作反过来在硬盘的整体效率中起着重要的作用。数据库)。 但是,固态驱动器(SSD)是否应该完全取代传统硬盘(HDD),我们是否可以说B树和变体将变得过时,从而为在直接访问内存上更有效地运行的数据结构留出空间?如果是这样,这些结构将是什么?(例如,哈希表,AVL树)

5
什么时候应该和不应该使用'new'关键字?
我看了Misko Hevery 在Google Tech Talk上有关单元测试的演讲,他说避免new在业务逻辑代码中使用关键字。 我写了一个程序,最终还是在new各处使用了关键字,但是它们主要用于实例化保存数据的对象(即,它们没有任何功能或方法)。 我想知道,当我在程序中使用new关键字时,我做错什么了吗?我们在哪里可以打破“规则”?


6
您如何处理“在某些时候”要解决的不断增长的问题?
我们正在使用JIRA来跟踪软件项目中的问题。我们注意到的一个效果是,我们经常会创建一个新问题,但是根本不知道何时/是否要解决该问题。因此,我们发明了一个伪造的“遥远的未来”里程碑,将其分配给这些问题。 碰巧的是,分配给该里程碑的一堆问题一直在不断增长,因此这似乎不是一个好方法。到现在为止,它们太多了,以至于要审查它们的有效性成为了很多工作。由于与您相关的组件已被删除,因此其中一些变得无效。其中一些被其他问题重复。其中一些描述的措辞很差,以至于没有人真正知道它们的含义了。 其他软件开发团队如何处理有效的问题,但这些问题可能随时都无法解决。您是否会麻烦录制它们?您是否将它们分配给下一个计划的版本,然后在下一个发行版本临近时再次查看它们?还有吗

2
如果通过笔名进行归属,那么谁拥有代码的权利?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我知道在某些情况下编码人员使用化名而不是其真实姓名。 示例包括: 中本聪(比特币) 为什么(Ruby) 我想知道的一件事是,归因是否通过假名完成,谁拥有代码的权利?

6
我可以将接口方法视为抽象方法吗?
我正在考虑这一点,我对此有些怀疑。 当我声明一个接口时,例如: public interface MyInterface { public void method1(); public void method2(); } 这些接口方法可以被认为是抽象的吗?我的意思是抽象方法的概念是: 抽象方法是已声明但不包含任何实现的方法。 那么,可以将这些方法视为抽象方法吗?它们不是“纯”抽象方法,因为我没有使用这个abstract词,但从概念上讲,它们看起来像是。 您能告诉我些什么? 谢谢。

3
命名空间和类名称准则
当涉及到utils和其他帮助类时,我在正确命名类和服务时遇到问题。 您将如何构造以下内容: EventService.cs EventServiceUtils.cs EventServiceValidators.cs EventServiceCoordinator.cs 等等... 我有与上述服务具有相同需求的多种服务。一种想法是将所有这些都分离到合适的名称空间中,使其看起来像这样: Services.EventService.EventService.cs //(the actual service) Services.EventService.Validators.DateValidator.cs Services.EventService.Validators.ParticipantValidator.cs Services.EventService.Coordinators.ParticipantCoordinator.cs Services.EventService.ExtensionMethods.Extensions.cs 等等。每个命名空间当然都是一个单独的文件夹。但这并不是100%,因为DateValidators其他服务中可能还有更多,这很容易导致不必要的引用。 并且还在Services.EventService.EventService.cs名称空间中包含类名称,这也不好。您可以使用Services.Event.EventService.cs,但是当然已经有一个具有该名称的实体。 这是领域模型。
15 c#  architecture 

7
去域还是不去域
SQL92和SQL99标准定义了DDL构造。并非所有的数据库都支持此功能,或者并非所有数据库都支持此名称(例如,SQL Server具有用户定义的类型)。CREATE DOMAIN 这些允许人们定义要在其数据库中使用的约束数据类型,以简化和执行与允许值有关的规则。这种数据类型可用于列声明,存储过程和函数的输入和输出等。 我想知道: 人们实际上在他们的数据库设计中使用域吗? 如果是这样到什么程度? 它们有多有用? 您遇到了什么陷阱? 我正在尝试评估在将来的数据库开发中使用它们的可行性。
15 sql  sql-domain 

7
什么时候应该将工作转移到GPU而不是CPU?
正在开发诸如OpenCL之类的较新系统,以便我们可以在图形处理器上运行越来越多的代码,这是有道理的,因为我们应该能够尽可能多地利用系统中的功能。 但是,在所有这些新系统中,似乎GPU在各个方面都比CPU更好。因为GPU可以并行计算,所以多核GPU实际上看起来要比多核CPU好得多。您将能够一次进行许多计算,从而真正提高速度。在某些情况下,串行处理仍比并行处理更好,更快和/或更有效吗?
15 optimization  cpu  gpu 

2
最好有单独的“创建”和“编辑”动作,还是将“创建”和“编辑”合并为一个动作?
我们正在使用带有控制器/视图表示层和模型的ASP.NET MVC 2,该模型和模型由业务逻辑层,数据访问层[存储过程和与存储过程进行通信的类/方法]组成。 在业务层及更高层中,对于大多数用途而言,编辑似乎能够代表对象的创建和对象的编辑。这与定义“保存”方法的存储库设计模式非常吻合。我们可以简单地在存储过程中检查ID是否为0,然后如果ID为0则创建一个新对象,否则我们可以只更新现有对象,因为类别ID应该匹配一个。 讨论的主要要点是,将包含创建的编辑拆分为DAL层之外的创建和编辑的单独部分是否最有意义。 一个明显的例子可以显示为路线: 创建 - HTTP:// someurl / somearea /编辑/ 0 编辑 - HTTP:// someurl / somearea /编辑/ 254 与 创建 - HTTP:// someurl / somearea /创建 编辑 - HTTP:// someurl / somearea /编辑/ 254 是否有与此相关的既定标准或最佳实践? 我知道这是一个小细节,但从逻辑上讲,这是一个重要的细节。

10
建议进行大的更改/将其重写为实习生[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 上下文: 这是一个内部项目(我认为很多人都不会使用) 很老了 我们正在更新 问题: 它滥用了mvc框架(不使用模型,视图中的业务逻辑等) 我们被要求做的事情很小,但是由于凝聚力低,我们有两种选择: 继续捣蛋 移动大量代码或重写事物 解决方案(我看到): 继续使用它,忽略最佳实践,而希望尽快完成,并且不通过重构/重写来引入新的错误 重构/重写 我想我的问题确实是:如果我想对该项目进行较大的更改,该如何提出建议而不侮辱任何人?还是对我来说简单地顺应潮流,即使有时意味着(隐喻)导管胶带?

14
我们应该鼓励编码风格来支持开发人员的自治,还是不鼓励编码风格来实现一致性?
开发人员if/else使用单行代码语句编写块,例如: if (condition) // Do this one-line code else // Do this one-line code 另一个使用大括号: if (condition) { // Do this one-line code } else { // Do this one-line code } 开发人员首先实例化一个对象,然后使用它: HelperClass helper = new HelperClass(); helper.DoSomething(); 另一位开发人员实例化并在一行中使用该对象: new HelperClass().DoSomething(); 开发人员更容易使用数组和for循环: string[] ordinals = new string[] {'First', 'Second', …

6
在不了解Javascript的情况下使用Coffeescript有多危险?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我是一位经验丰富的程序员,致力于学习Web开发。我正在尝试开发一个使用svg或canvas作为图形的客户端Web应用程序。我已经决定要用Coffeescript编写应用程序代码。我不知道Javascript或Coffeescript。 了解Javascript对Coffeescript Web开发有何必要?我是否可能遇到一些麻烦的问题,需要我了解Javascript?我可以愉快地使用Coffeescript中的Javascript API吗? 编辑:我可以轻松地在一周内学习Javascript的基础知识。我更担心Javascript似乎有很多隐藏的尖锐边缘。在StackOverflow上最奇怪的语言功能问题中,Javascript是最常见的语言之一。它具有不同寻常的对象和类模型。它具有非显而易见的名称范围规则。我发现我真的需要一种语言才能花费一周以上的时间。 我将进行一个简单的小项目来学习Web开发。使用Javascript或Coffeescript会更好吗?我认为从长远来看,我会更喜欢Coffeescript,但是如果我需要对Javascript进行透彻了解才能使用Coffeescript,那么我愿意从Javascript开始。

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.