软件工程

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

7
技术初创公司如何进行软件测试?
我看过很多研究文章和技术博客,它们夸耀了软件测试的好处。我对此深信不疑。但是,由于所有软件测试研究都是由大型软件公司进行的,因此我认为它们并不真正适用于初创公司。与大型软件公司相比,初创公司具有不同的需求和约束。 因此,这就提出了问题。科技创业公司应该编写自动化测试吗?如果是这样,它们是否以与大型软件公司相同的方式进行?(烟度测试,回归测试等)。最好是可以参考一些与此主题相关的研究文章。因为我自己找不到任何文章。 (我必须承认,即使我仍处于职业生涯的初期,但我还没有看到一家认真致力于编写自动化测试的初创公司)
10 testing  startup 

2
node.js和c#的用例
我做了很多ASP.NET工作(C#,MVC),但其中大多数是典型的Web开发。我使用CRUD存储库进行Restful体系结构。我的大多数客户在他们的应用程序中没有很多高级要求。 我现在正在研究node.js及其对性能的影响(我沉迷于速度),但是我并没有那么深入地研究它。 我想知道 node.js可以现实地替换我在C#和ASP.NET MVC中的典型Web开发(不重写现有应用程序,而是在开发新应用程序时) 通过向现有体系结构添加一些异步优势,node.js可以补充ASP.NET MVC应用程序。 是否有针对C#和node.js的用例? 编辑 我喜欢ASP.NET MVC,并且对它的发展感到非常兴奋。只是想看看是否有特殊的用例会支持node.js

5
制造与软件开发[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 人们常说,与制造业相比,软件产业还不成熟。特别是关于过程驱动。 问题:作为开发人员,我们可以从制造过程中学习吗?采用他们的流程是否可以提高软件开发的成功率? 我的观点:在制造产品时,产品的生产很大程度上是过程驱动的。您可能有一家工厂,每个人都有他们要遵循的一组特定任务。工人(或机器人)可能整天拧紧螺丝。然后,下一位专家将执行该过程中的下一个任务。工人(和机器人)不会阻止过程,也不会“动态”地弥补问题。零件在整个过程中都经过搅动,输出是成品。它运作良好,公司获得了99.99966%的无缺陷产品。随着时间的流逝,公司消除了效率低下的问题。这令人印象深刻,并且很可能是行业成熟的标志。 在制造过程中,定义的过程可以从字面上创建最终产品。我认为在软件中不是这种情况。我们可能有用于源代码控制,代码审查,检入表,需求收集,SDLC等的流程。但是执行这些流程并不能本身创建成品。这些过程可能是有益的,但与实际创建正交。 假设您的公司与软件开发公司签有合同,该软件将搜索数百万张图像以查找罪犯的面孔。尽管有繁重的过程驱动环境,开发人员仍必须“即时”创建事物。动态地做事违背了制造业的精神。机器人无需考虑即可执行良好的制造过程。 为了创建尚未在人的脑海中扎根的复杂算法,必须实时创建事物。软件开发不是过程的后续,而是计算机要执行的过程的创建。那是根本的区别。无论我们围绕开发进行了多少正交处理,我们在创建时总是会“动态”进行。 与我交谈的每个人似乎都同意制造业的观念。我一个人在想吗?

4
您是否应该将js,html和CSS分开?
我一直都在听/读到,保持js,html和css分开更干净。据说它使维护,调试更加容易。据说它更有效,因为它允许缓存/最小化CSS和JS文件。 就我而言,使用网络框架(Django,Rails等),JavaScript模板库……我倾向于将很多HTML页面拆分为多个可重用模板-如果需要,可以使用某种小部件。例如,我可以有一个新闻提要窗口小部件,一个选择多个窗口小部件等……每个窗口小部件在不同页面上的布局都一致,并且每个页面均受其JavaScript的控制。 对于这个组织-在我看来它很干净,可以最大程度地提高可重用性-我很难理解为什么将所有js和css放在单独的文件中会更简单。我认为例如这样会更简单: 在选择多个小部件文件中 html 基本的CSS布局 用一些JS控制直接交互和UX增强。 我认为这种方式更可重用,更易于维护,因为您不必滚动浏览胖的js文件,然后切换到并滚动浏览胖的css文件,再次切换到html文件...来回。 因此,如果您坚持通常建议的分离方式,那么我很想知道你们如何组织代码。 是否真的有这样做的充分理由? 是不是网络上的指南通常假定您不会使用任何精美的工具(在这种情况下,我希望获得更多有关最佳实践的最新在线阅读资料)? 这只是偏好问题吗?


7
从架构到开发的过渡是否有最佳实践?
我们正在寻找改进从架构到开发的移交任务的过程。 在规模的一端,没有架构指南会让您冒险,每个开发人员都以自己的方式行事。 在规定了一切的规模的另一端,规范花费的时间比开发所需的时间长,您可能会面临非常无聊的开发任务。 有没有人在这些极端之间找到最佳的中间立场?您将哪些工件交付给开发人员?例如:模块,类结构或顺序图?

4
针对Web或SQL开发人员的FizzBu​​zz类型的问题是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 一段时间后,我们再次招聘,我正在审查针对程序员的测试;其中一些有些过时了。针对Web开发人员和SQL 的FizzBu​​zz类型的问题是什么?那不是太琐碎,但是在没有Google的情况下,可以用笔和纸在五到十分钟内解决吗? 我通常会根据简历剔除大约三分之二或更多的候选人,然后在一个小时的面试中(可能是通过电话)剔除除少数几个非常好的候选人之外的所有候选人。此时,候选人正在编写个性测试,并且有机会编写一些类似于FizzBu​​zz的代码。因此,我并不是要消除大量候选人,而是要验证我的初步评估,认为该候选人是可雇用的并且能够编码。
10 interview 

7
从能够编写代码到成为一名优秀的开发人员,我该如何发展?
我对如何从能够编写脚本(bash,awk)和编写简单的应用程序(c,php,python)到设计和开发更大,更复杂的软件缺乏具体的解释感到沮丧。似乎一方面有编程语言书籍,另一方面有专为程序员团队设计的软件工程/项目管理书籍。 我都读过很多。我已经阅读过XP / Agile经典著作,并对软件开发过程有不错的理论理解。我喜欢阅读别人的代码,可以很好地遵循它。但是,当我对一个项目有一个想法或想从“问题/需求在这里”到“解决方案在这里”时,我的脑子一片空白,我不知道从哪里开始。 我只是破解吗?对于没有团队合作或大型软件公司的个人开发人员,是否有任何结构化的工作流程?我真的不希望获得PMP或在软件公司工作。我只是在寻找有效,高效,实用的工作流程。

6
“门户网站”一词过时了吗?
我的老板一直在为我从事的项目使用“门户”一词。 在我看来,这个词使我想起了90年代后期的Yahoo。“门户”一词是否具有古老的含义,还是仅我一个人?您是否认为可以使用它,还是会把客户对产品的认知拖到中年?

5
使用预处理器指令或if(constant)语句是否更好?
假设我们有一个代码库,可用于许多不同的客户,并且其中包含一些仅与类型X的客户相关的代码。最好使用预处理器指令将代码仅包含在类型X的客户中,或者使用if语句?要更清楚: // some code #if TYPE_X_COSTUMER = 1 // do some things #endif // rest of the code 要么 if(TYPE_X_COSTUMER) { // do some things } 我可以考虑的参数是: 预处理程序指令可减少代码占用量并减少分支(在非优化编译器上) 如果语句的结果是始终编译的代码,例如,如果某人犯了一个错误,而该错误将损害与其从事的项目无关的代码,则该错误仍然会出现,并且他不会破坏代码库。否则,他将不会意识到腐败。 经常有人告诉我,比起预处理器,我更喜欢使用处理器(如果这完全是一个论点……) 什么是最好的-在谈论针对许多不同客户的代码库时?
10 c++  c 

5
应该在单元测试之前或之后执行代码审查
我正在与我的同事讨论何时执行代码审查-在单元测试之前或之后。最佳做法是什么? 我们可能需要考虑的一些因素(可能还有更多): 代码更改的大小-较大的更改意味着代码审查将导致更多更改。如果这些更改要大得多(如果UT在代码审查之前),则需要再次重复大多数UT。 进行单元测试所需的时间 是新功能还是错误修复

3
准备好以开发人员的身份进行代码审查了吗?
我在这里寻找一些想法。 我阅读了这篇文章,《如何进行代码审查和代码审查》有什么好处?这些信息非常有用,但是我仍然需要在下面的问题上更加清楚。 我的问题是 作为目标开发人员,您能否建议开发人员在审查其代码之前可以采用的一些最佳做法。 目前,我练习以下方法 PPT逻辑流程 详细评论。 问题:即使我已经实施了上述做法,但它们对审核没有帮助。我面临的问题是,当引用某些逻辑时,我一直在寻找实现和流程,并且在过程中浪费了太多时间,并且引起了人们的注意。 我认为很多开发人员也会经历我正在经历的事情。
10 c#  code-reviews 

5
当方法注释经常如此相似时,是否应该同时包含摘要和返回说明?
我是正确编写代码的支持者,并且我很清楚其可能存在的弊端。这超出了这个问题的范围。 考虑到我在Visual Studio中非常喜欢IntelliSense,我喜欢遵循为每个公共成员添加XML注释的规则。 但是,存在一种形式的冗余,即使像我这样的过多评论者也会对此感到困扰。以List.Exists()为例。 /// <summary> /// Determines whether the List<T> contains elements /// that match the conditions defined by the specified predicate. /// </summary> /// <returns> /// true if the List<T> contains one or more elements that match the /// conditions defined by the specified predicate; otherwise, false. /// …

5
在同一函数/方法中引发和捕获异常
我编写了一个函数,要求用户输入,直到用户输入正整数(自然数)。有人说我不应该在函数中抛出并捕获异常,而应该让函数的调用者来处理它们。 我不知道其他开发人员对此有何看法。我也可能在函数中滥用异常。这是Java中的代码: private static int sideInput() { int side = 0; String input; Scanner scanner = new Scanner(System.in); do { System.out.print("Side length: "); input = scanner.nextLine(); try { side = Integer.parseInt(input); if (side <= 0) { // probably a misuse of exceptions throw new NumberFormatException(); } } catch (NumberFormatException numFormExc) …
10 exceptions 

2
代码合同/声明:重复检查怎么办?
我非常喜欢用我使用的语言编写断言,合同或任何类型的支票。让我感到困扰的一件事是,我不确定处理重复支票的通用做法。 情况示例:我首先编写以下函数 void DoSomething( object obj ) { Contract.Requires<ArgumentNullException>( obj != null ); //code using obj } 然后几个小时后,我编写了另一个函数,该函数调用第一个函数。由于所有内容仍在内存中,因此我决定不重复合同,因为我知道DoSomething已经检查了一个空对象: void DoSomethingElse( object obj ) { //no Requires here: DoSomething will do that already DoSomething( obj ); //code using obj } 明显的问题:DoSomethingElse现在依赖于DoSomething验证obj不为null。因此,应该DoSomething决定不再检查,或者如果我决定使用另一个函数,则可能不再检查obj。毕竟,这导致我要编写此实现: void DoSomethingElse( object obj ) { Contract.Requires<ArgumentNullException>( obj != null …

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.