Questions tagged «development-process»

有关软件开发过程的问题。

18
单元测试真的有用吗?[关闭]
我刚刚获得CS学位,并且目前有初级.NET开发人员(C#,ASP.NET和Web表单)的工作。回到我上大学时,单元测试的主题确实涵盖了,但是我从来没有真正看到它的好处。我了解应该执行的操作,即确定代码块是否适合使用。但是,我之前从未真正编写过单元测试,也从未感到有必要这样做。 正如我已经提到的,我通常使用ASP.NET Web表单进行开发,最近我一直在考虑编写一些单元测试。但是我对此有一些疑问。 我读过单元测试通常是通过写“模拟”来进行的。虽然我理解了这个概念,但似乎无法弄清楚如何为完全动态的网站编写模拟文件,并且几乎所有内容都依赖于来自数据库的数据。例如:我使用很多具有ItemDataBound事件等的转发器(同样取决于“未知”数据)。 因此,问题1:是否经常为ASP.NET Web编写单元测试表单?如果是,那么:如何解决“动态环境”问题? 在开发时,我会经历很多反复的尝试。这并不意味着我不知道自己在做什么,而是我通常会写一些代码,点击Ctrl F5查看会发生什么。尽管这种方法在大多数情况下都能奏效,但有时我会觉得自己有些笨拙(由于我的经验不足)。有时我也会像这样浪费很多时间。 因此,问题2:你们会建议我开始编写单元测试吗?我认为这可能对我的实际实施有所帮助,但是我再次觉得这可能会使我慢下来。

9
构建脚本的优点是什么?
在我的大部分编程生涯中,我都在与我一起使用的IDE中使用“ build / compile / run”命令来生成可运行的程序。这是一个按钮,非常简单。但是,随着我对不同语言和框架的更多了解,我越来越多地谈论“构建脚本”(ANT,Maven,Gradle等)来运行项目。我对这些的理解是,它们是给编译器/链接器/ magical-program-maker的指令,用于指定配置详细信息-细节。 我记得在学校时曾写过makefile,但是那时我并没有看到任何特殊的优势(我们只在Unix终端中使用它们,因为在该终端中没有带有“构建”按钮的IDE)。除此之外,我在这里还看到了其他问题,这些问题讨论了构建脚本不仅可以创建程序,还可以做更多的事情- 它们可以运行单元测试以及安全的资源,而与主机无关。 我不能忘记构建脚本对于作为开发人员来说很重要的感觉,但是我想要一个有意义的解释。为什么要使用/编写构建脚本? Build Script和Build Server的职责讨论了它在更大范围内的作用。我正在寻找构建脚本相对于IDE的“构建/运行”命令或类似的简单方法所提供的特定优势。


10
如何激励同事编写单元测试?[关闭]
我们正在研究已经生产大约5年的大型产品。该代码库在工作。效果不是很好,但是可以正常工作。新功能投入生产并通过少量质量检查进行了测试。错误已修复,等等。但是除我以外,没有人在编写单元测试。没有人通过编写单元测试来确保所有特殊错误(测试用例)再也不会发生,从而利用“跟踪”错误的能力。 我已经和管理层谈过了。我已经和开发人员谈过了。我已经与整个公司的所有人进行了交谈。每个人都说:“是的,我们必须编写更多的单元测试!” 那是大约一年前。从那时起,我就开始引入预提交代码审查(Gerrit)和持续集成(Jenkins)。 我举行了一些有关单元测试的会议,还展示了编写单元测试的好处。但是似乎没有人对此感兴趣。 问题1:如何激励我的同事编写单元测试? 问题2:如何保持动力以遵循我的个人代码质量标准?(有时真的很令人沮丧!) PS:一些令人沮丧的事实(在1年内达成): 单元测试总数:1693 总“示例单元测试”:大约50 由我完成:1521 编辑:我期望太多了吗?这是我的第一个工作地点,我正在努力做到最好。 编辑2:根据所有答案,我为自己做了一个小清单。我已经与两位开发人员私下交谈过,我们进行了坦诚交谈。 其中一位告诉我,就像Telastyn所说的那样,他对单元测试真的很不满意。他说他想变得“更专业”,但是他需要一个启动。他还说,我们与所有开发人员(9-11岁左右)进行的单元测试会议很好,但是太拥挤了。嗯 一些批评家给我,但我会从中学到东西。(请参阅以下有关tdd kata会议的回答!) 另一位表示他对编写单元测试不感兴趣。他认为自己的工作足以应付他的薪水。他不想付出更多的努力。我非常无语。典型的9-5岁的“工人”。 下周,我将与其他开发人员交谈。 感谢您的出色回答(到目前为止!)和支持。我真的很感激!我学到了很多东西,非常感谢!

14
我如何才能避免总是觉得自己完全从头开始重建程序,会做得更好呢?[关闭]
我已经学到了大量的编码,但是,它始终处于科学环境(不是计算机科学)中,完全是自学成才,没有任何人可以指导我正确的方向。因此,我的编码之旅一直很……混乱。我现在已经注意到,无论何时构建某种类型的程序,最终我都知道如何能够更加优雅,高效,灵活,易于管理地完成它。在某些情况下,我实际上回过头来重新构建了东西,但是通常这实际上是不可行的。尽管到目前为止我的大多数程序都相对较小,但是每次创建东西时都完全重写大型程序似乎很笨拙。 我只是想知道,这是正常的经历吗?如果没有,您如何防止这种情况发生?我已经尝试过预先计划一些事情,但是直到开始编写一些代码之前,我似乎无法真正预见到一切。

26
数学与编程有什么关系?[关闭]
我刚刚获得了软件开发文凭。现在,我们从基本的Java开始(例如,您可能会说到底)-很好,除了知道如何在Java中做“ Hello World”之外,我没有编程经验。 我一直听到数学与编码有关,但是怎么回事呢?哪些通用示例可以说明数学和编程如何结合在一起,或者相互依赖? 我很抱歉我的问题含糊不清,我几乎还没有对作为代码猴子学生进入的那种世界有一个大概的了解...

9
思考发展
我作为应用程序开发人员已经工作了一年半(不多久),而我刚刚获得了我的第一个大型项目。 不用说它进展得并不顺利,所以我向参与该项目的高级程序员寻求了有关如何实现它的建议。 他说,我已经彻底思考了即将完成的任务,因为在花太多时间思考设计模式之前,我从未处理过如此规模的项目。用他的睿智话语,他告诉我“为未来而努力,为现在而建设”。 程序员在进行这样的项目时通常会遵循这种趋势吗?例如,如果您被要求做一个概念验证模型,是否只是尽快将一个可行的例子拼凑成一个典型的趋势? 编辑:鉴于引发的辩论,我想提一下这种情况是极端的:由于我们无法控制的因素,我们的截止日期很紧迫(即如果我们不这样做,我们瞄准的市场将失去兴趣。 (没有向他们展示一些东西),并且他的建议对这个特定任务非常有效。

17
我负面的实习经历能代表现实世界吗?[关闭]
我很好奇我目前的实习经历是否代表实际行业。 作为背景知识,我将学习一所主要大学的两个计算专业和一个数学专业的较好部分;我上过每一堂课,并且都崇拜过他们,所以我想以为我并不擅长编程。我曾在一家主要的软件公司实习,直到现在一半,我对代码质量异常低落感到震惊。注释不存在,全是意大利面条式的代码,所有可能出错的内容甚至更糟。我已经做了大量的辅导/ TAing,所以我很习惯阅读错误的代码,但是我一直看到的主要行业产品都胜过所有这些。我每天工作10到12个小时,从不觉得自己无所事事,因为 数小时的尝试,试图找出一个未公开的API或确定(完全未公开的)产品其他部分的行为。到目前为止,我每天都讨厌工作,而我非常想知道这是否是我一生中最需要的东西。 我是不是在实习上吸了一根短草(荒谬的薪水暗示着这不是一个低素质的职位),或者这就是现实世界吗?

27
为什么要让/不让开发人员测试自己的作品
我想收集一些争论,为什么让开发人员在产品投入生产前的最后一步测试自己的工作是一个坏主意,因为不幸的是,我的工作地点有时会这样做(这是最后一次出现,这种说法归结为大多数人太忙于其他事情,而又没有时间让另一个人熟悉程序的那部分-这是非常专业的软件)。 在这种情况下有测试计划(尽管并非总是如此),但我非常赞成让一个没有进行测试变更的人实际进行最终测试。因此,我想问您能否为我提供一个良好而可靠的论点清单,以便下次讨论时可以提出。或者提供反驳,以防万一您认为这很好,尤其是当有正式的测试用例要测试时。

15
开发人员是否应将错误输入错误跟踪系统?
在开发(功能或错误修复)时,有时我会偶然发现与我正在研究的内容不直接相关的错误。在那种情况下我该怎么办。修好吗?试着记得以后再修复它吗?写下来吗?还是将其输入错误跟踪系统? 我通常将其输入到Bug跟踪系统中,然后让过程进行自我显示(例如,分类,分配等)。但是,我几乎从未见过其他开发人员输入错误。(这是为什么?)

7
您如何将程序从开发中过渡到发布?
在某个时候,正在开发一个程序。一直在添加,删除或更改功能。每个版本都不过是一个原型。因此,此时我不会在编写超级干净的代码上浪费太多时间,因为我永远不知道事情持续多长时间。当然,我尝试将代码质量保持在某些标准上,但是时间始终是一个问题。 然后是程序完成的时刻,决策者说“就是这样”。此时我确实有一个可以正常工作的原型,但是在开发阶段,所有来回的代码都有些混乱。我应该开始测试/最终调试,但是我的直觉告诉我,现在应该以某种方式清理和/或重写内容,以提供使其易于维护等的适当体系结构。 一旦对材料进行了测试和批准,则没有必要进行重写。我经常站在那儿,工作着一个“完成的”原型,在测试过程中发现一个错误,我发现这是整个开发过程中非智能编码的结果。我正在测试中,错误修正将是一个重写……真是一团糟! 我敢肯定,有更好的/教科书方式。但是我必须在一个真正的工作环境中工作,而不是一切都是教科书。 那么,如何将工作原型转换为具有稳定代码库的发行版本?也许我不应该认为开发一旦完成就将其视为清理阶段……我不知道,我需要帮助。 编辑 我想澄清一些事情。 我100%愿意在此之前和之后都这样做,代码清晰易读。但是我也必须把事情做好,并且不能梦想代码干净整洁的美丽。我必须找到一个折衷方案。 通常,一项新功能实际上只是我们要尝试的东西,看看实现这样的事情是否有意义。(尤其是在移动应用中,是为了在实际设备上获得真实的外观)。因此(imho)在第一次“让我们看看”迭代中并不能证明过多的工作是不小的。但是有时会出现问题,我何时支付此技术债务?这就是这个问题的全部内容。 如果我知道一半的功能将在一天后被删除(到现在为止我们公司已有足够的经验),我真的很难相信解决我的问题的最佳方法是仍然投入额外的时间来编写所有干净的东西,即使大部分将在不久后删除。对我来说,如果事情一发不可收拾,我进行一次大的清理,我会节省时间,因此是我的问题。

13
我老板的坏案是“这里没有发明”
我的部门专门致力于将客户数据转换为我们的数据库架构,以便他们可以使用我们的软件。 现在,我们有一些C#应用程序IDataReader(占99%的时间SqlDataReader),执行一些清理和映射,将其插入到DataRow对象中,然后使用将SqlBulkCopy其插入到我们的数据库中。 有时(尤其是当源数据库包含图像作为varbinary对象时),此过程实际上可能陷入从服务器到应用程序的SQL传输,然后又转过来再返回到服务器。 我觉得,如果我们将某些转换重写为SSIS软件包,则可以大大加快转换速度。但是,我遇到的最大障碍是当我的老板以“在这里没有发明”的方式退缩并说:“如果Microsoft放弃对SSIS的支持,那该怎么办?我们将拥有所有这些过时的代码,并且将被搞砸。” 这不是我第一次点击“如果他们删除了该功能...?” 我老板的回答。我没有时间以旧的方式编写转换,自我学习SSIS,也没有以新的方式编写它来演示/测试收益(我们都没有人使用过SSIS,所以会有一段时间必须学习如何使用它)。 在这种情况下我该怎么办?停止推广新技术?等到他离开部门后(我是继他之后部门中第二高的人,但是离职/退休可能还需要几年时间)?寻找一种新方法让他停止害怕第三方工具?

12
让非程序员了解开发过程
当为一家主要不是编程公司的公司开始一个项目时,人们的期望之一是最后会有一个成品,其中没有任何错误,并且可以立即完成所需的一切。但是,这种情况很少发生。 有什么方法可以管理期望并向非程序员说明软件开发与其他类型的产品开发有何不同?

25
坦白说,您喜欢牛仔编码吗?[关闭]
大多数程序员捍卫政治上正确的方法论,例如敏捷,瀑布式,RUP等。其中一些遵循方法论,但并非全部遵循。坦白说,如果您可以选择方法论,那么您肯定会采用主流的“正确”方法论,或者您更喜欢像牛仔编程这样的“简便”方法论?为什么? 我知道这取决于。请说明何时使用一种或另一种。请说出您在Cowboy编码方面看到的优势。 在Wikipedia上了解有关Cowboy编码的信息


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.