Questions tagged «development-process»

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

8
重构时如何保持单元测试正常工作?
在另一个问题中,揭示了TDD的难题之一是在重构期间和重构之后使测试套件与代码库保持同步。 现在,我非常喜欢重构。我不会放弃做TDD。但是我也遇到过这样的测试问题,即以较小的重构会导致很多测试失败。 重构时如何避免破坏测试? 您是否将测试写得更好?如果是这样,您应该寻找什么? 您是否避免某些类型的重构? 有测试重构工具吗? 编辑:我写了一个新问题,问我要问什么(但将此问题保留为一个有趣的变体)。

6
将个人Python项目变成可发布的库
我是一名学者,而不是程序员,并且我有多年编写供自己使用的Python程序以支持我的研究的经验。我的最新项目可能对我和其他许多人都有用,并且我正在考虑将其作为开源Python库发布。 但是,从运行中的个人项目到可以被其他人轻松安装和使用的库,似乎有许多障碍需要克服。这个问题是关于我应该开始着手公开发布的第一步。 目前,我只有一个git存储库,其中包含使用该库以及该库本身的代码,并且我将git用作紧急撤消按钮,以防万一发生任何问题。所有这些对于单个用户都可以正常工作,但是如果我要释放它,显然不合适。我要结束的地方是我的库位于单独的存储库中,并且可以由其他人使用来安装pip,并且具有稳定的API。 一旦我想发布它,学习使用setuptools等可能就不那么困难了-我的问题是知道如何工作才能达到这一点。 所以我的问题是,为了开始准备供公众使用的Python库项目,应该采取的第一步步骤是什么?我应该如何重组我的目录结构,git仓库等,以便开始努力公开发布该库? 更一般而言,如果首次尝试使用已知有帮助的资源,那将非常有帮助。指向最佳实践和避免错误的指针等也将非常有帮助。 需要澄清的是:当前的答案是按照“如何使我的Python库成为其他人可以使用的好库?”的方式来解决一个问题。这很有用,但是与我要提出的问题不同。 我目前正处于发布项目的漫长旅程的开始。我的实现的核心工作正常(并且工作得很好),但是我对即将进行的大量工作感到不知所措,并且我正在寻找有关如何进行流程导航的指导。例如: 我的库代码当前已耦合到我自己的使用它的特定于域的代码。它位于子文件夹中,并且共享相同的git存储库。最终,需要将其制作成一个独立的库并放入其自己的存储库中,但是由于我不知道如何做,所以我一直在拖延。(既不是如何在“开发模式”下安装库以使我仍然可以对其进行编辑,也没有如何使两个git仓库保持同步。) 我的文档字符串很简洁,因为我知道最终我将不得不使用Sphinx或其他工具。但是这些工具似乎并不容易学习,因此这成为一个主要的子项目,我一直推迟进行。 在某些时候,我需要学习使用setuptools或其他工具来打包它并跟踪依赖项,这非常复杂。我不确定现在是否需要这样做,并且该文档对于新用户来说绝对是个迷宫,因此我决定以后再做。 我从来不需要进行系统的测试,但是我肯定会对此项目进行测试,因此,我必须(i)了解足够的测试知识,以了解哪种方法适合我的项目;(ii)了解哪些工具可用于我选择的方法;(iii)学习使用我选择的工具;(iv)为我的项目实施测试套件等。这本身就是一个项目。 我可能还有其他事情要做。例如,jonrsharpe发布了一个有用的链接,其中提到了git-flow,tox,TravisCI,virtualenv和CookieCutter,我以前从未听说过。(该帖子来自2013年,所以我还必须做一些工作来找出仍有多少钱。) 当您将所有这些放在一起时,这是一项巨大的工作,但是我敢肯定,如果我坚持不懈地完成工作,那么我就可以完成所有工作,而且我不着急。我的问题是知道如何将其分解为可管理的步骤,一次可以完成。 换句话说,我要问的是我现在可以采取哪些最重要的具体步骤,以便最终获得可发布的产品。如果我有空闲的周末,我应该关注哪些事情?哪一个(如果有的话)可以与其他人孤立地完成,这样我至少可以完成一个步骤而无需做整个事情?学习这些东西最有效的方法是什么,这样我仍然有时间专注于项目本身?(请记住,所有这些本质上都是一项业余项目,而不是我的工作。)我是否真的不需要做任何事情,从而为自己节省了大量时间和精力? 非常感谢所有答案,但是我特别欢迎关注这些项目管理方面的答案,尤其是对现代Python开发的引用。

4
在开发过程中使用#ifdef在不同类型的行为之间切换
在开发过程中使用#ifdef在不同类型的行为之间进行切换是一种好习惯吗?例如,我想更改现有代码的行为,我有几个想法如何更改行为,并且有必要在不同的实现之间切换以测试和比较不同的方法。通常,代码更改很复杂,并且会影响不同文件中的不同方法。 我通常会介绍几个标识符并执行类似的操作 void foo() { doSomething1(); #ifdef APPROACH1 foo_approach1(); #endif doSomething2(); #ifdef APPROACH2 foo_approach2(); #endif } void bar() { doSomething3(); #ifndef APPROACH3 doSomething4(); #endif doSomething5(); #ifdef APPROACH2 bar_approach2(); #endif } int main() { foo(); bar(); return 0; } 这样就可以在不同的方法之间快速切换,并且仅用一份源代码即可完成所有操作。是发展的好方法还是更好的做法?

7
如何说服队友遵守一些基本规则
我的队友有问题。长话短说:我们是三个学生,正在为一个竞赛项目工作。该项目包含2个独立的应用程序:一个用于Windows(由我开发)和一个用于Android(由我的同事负责开发)。我们的代码库永远不会相交,应用程序将通过第三方工具进行通信。 问题如下:去年我在一家大公司实习时,我有一些在团队中工作的经验,并且我尝试为我们的代码强制执行一些编码标准。我还设置了一个git仓库/ wiki /协作软件,可以用来推送代码/编写想法,文档协议等,但是看来我是唯一使用这些工具的人。 我试图告诉他们,从长远来看,编写高质量的代码和记录每一个步骤将使我们受益,但他们似乎没有看到它的好处。我也在考虑添加一些集成测试,但是据我所见,只要他们不使用当前的工具来简化他们的生活,我想我就无法说服他们集成测试的用处。 同行的大多数代码都驻留在他们的计算机上,他们没有共享通用的代码库,而且正如我发现的那样,他们通过使用usb棒开会和共享代码来集成自己的代码。 我的问题是:我对此事是否太苛刻?我是否执行一些荒谬的规则?请记住,这是一个小项目,要求非常明确(我创建了说明应用程序应该做什么的文档),三个熟练的开发人员可以在3-4天之内完成此操作,因此他们可能看不到书写质量的额外复杂性代码,只要它们当前的方法可以正常工作。 有什么方法可以向他们展示使用git等记录代码的好处吗?

7
如何改变草率的公司文化?[关闭]
有时,当我遇到需要解决的问题时,我发现解决该问题的最简单方法是编写一个小程序作为个人工具。我没有使它具有超级可用性或超强健性,因为我是唯一要使用它的人,而且我没有时间完善和全面测试它。 然后,一位同事看到了程序并提出了要求,因为他遇到了同样的问题,并且该工具可以提供帮助。我给他“这不是很漂亮,但可以完成工作”的免责声明,让他拥有。 我知道的下一件事,我的上司打电话给我,告诉我他正在尝试使该软件在客户的计算机上运行,​​但显示X错误消息。WTF ??该软件尚未发布,我也没有被告知需要发布。但是出于某种原因,我的上司认为它足够好,并在不通知原始开发人员的情况下发布了它。 现在,使用可以轻松解决此特定问题MessageBox.Show("DO NOT GIVE TO CLIENTS!");。但是,该问题表明存在更深层次的问题:我们的公司文化马虎。马虎软件可以,马虎进程也可以。不必担心未来-只需投入足够的精力使其几乎不能立即使用,将二进制文件放入.zip文件中,然后发货即可。足以胜任政府工作。 这是一家拥有10名全职员工的小型公司,正在成长,并且已经存在了一段时间。不要误会我的意思;我喜欢在这里工作,也喜欢公司。不要告诉我跑步;我想成为使公司变得更好的一部分。您如何开始为这种文化带来良好的变化?

9
您如何组织高度定制的软件?
我正在从事一个大型软件项目,该项目针对世界各地的各种客户进行了高度定制。这意味着我们可能有80%的代码在各个客户之间是通用的,但是还有很多代码必须从一个客户转换到另一个客户。过去,我们是在单独的存储库(SVN)中进行开发的,而当一个新项目开始时(我们的客户很少,但客户众多),我们根据过去的项目中最能满足我们需求的代码创建了另一个存储库。过去一直有效,但是我们遇到了几个问题: 在一个存储库中修复的错误不会在其他存储库中修补。这可能是组织问题,但我发现很难在5个不同的存储库中修复和修补错误,请记住,维护该存储库的团队可能位于世界的另一部分,并且我们没有测试环境,既不知道他们的时间表,也不知道他们有什么要求(一个国家的“错误”可能是另一个国家的“功能”)。 为一个项目进行的功能和改进可能对另一项目也可能有用,或者丢失了这些功能或进行了改进,或者如果将这些功能和改进用在另一个项目中,则经常导致将它们从一个代码库合并到另一个代码库的麻烦(因为两个分支可能已经独立开发了一年) )。 如果必须在分支之间合并所有这些更改,则在一个开发分支中进行的重构和代码改进可能会丢失或造成的危害大于弊。 我们现在正在讨论如何解决这些问题,到目前为止,我们提出了以下解决方案: 将开发保持在单独的分支中,但是要通过建立一个中央存储库来更好地组织它,其中将常规错误修复程序合并到其中,并使所有项目定期(例如每天)将来自该中央存储库的更改合并到自己的更改中。这需要庞大的纪律和分支之间的合并工作。因此,我不相信这会奏效,并且我们可以保持这一纪律,尤其是在时间压力加大的情况下。 放弃单独的开发分支,并建立一个中央代码存储库,我们所有的代码都将存在于此,并通过具有可插拔模块和配置选项进行自定义。我们已经在使用Dependency Injection容器来解析代码中的依赖关系,并且我们在大多数代码中都遵循MVVM模式,以将业务逻辑与UI完全分开。 第二种方法似乎更优雅,但是这种方法有很多未解决的问题。例如:如何处理模型/数据库中的更改/添加。我们将.NET与Entity Framework结合使用来拥有强类型化的实体。我看不到如何处理一个客户所需的属性,而又另一个客户无用的属性而又不会弄乱我们的数据模型。我们正在考虑通过使用卫星表(有一个单独的表,其中特定实体的额外列与原始实体1:1映射在一起)解决数据库中的问题,但这仅是数据库。您如何在代码中处理此问题?我们的数据模型位于一个中央库中,使用该方法我们将无法为每个客户扩展。 我敢肯定,我们不是唯一一个在这个问题上苦苦挣扎的团队,我很震惊地发现关于该主题的资料很少。 所以我的问题如下: 您对高度定制的软件有什么经验,选择了哪种方法以及它如何为您工作? 您推荐哪种方法,为什么?有没有更好的方法? 您是否可以推荐有关该主题的好书或文章? 您对我们的技术环境(.NET,实体框架,WPF,DI)有具体建议吗? 编辑: 感谢所有的建议。大多数构想与我们团队中已有的构想相符,但了解您对它们的经验以及更好地实施它们的提示确实很有帮助。 我仍然不确定我们会走哪条路,也没有做出决定(单独做出),但是我会在团队中传递这一点,并且我相信这会有所帮助。 目前,男高音似乎是一个使用各种客户特定模块的单一存储库。我不确定我们的体系结构是否达到这个目标,或者我们需要投入多少资金才能使其适应要求,因此有些事情可能会在单独的存储库中保留一段时间,但是我认为这是唯一可行的长期解决方案。 因此,再次感谢您的所有回复!

5
数据输入验证-在哪里?多少?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 数据输入验证对我来说一直是内部的斗争。 即将在我们的旧应用程序重写项目中添加一个真正的安全框架和代码(到目前为止,该框架几乎保持了卡式城堡般的旧安全代码和数据验证),我再次想知道应该验证多少,哪里等等 在担任Java专业开发人员的5年中,我创建并完善了个人规则,以进行数据输入验证和安全措施。当我想改进自己的方法时,我希望有人听到你们的一些想法。通用规则和过程很好,并且特定于Java的规则和过程也很好。 归纳起来,以下是我的指南(在3层Web应用程序样式中公开),并带有简要说明: 第一层客户端(浏览器):最低限度的验证,只有不变的规则(必填电子邮件字段,必须选择一项,依此类推);减少使用诸如“ 6到20个字符之间”之类的附加验证的频率,因为这会增加对变更的维护工作(可以在业务代码稳定后添加); 第一层服务器端(网络通信处理,“控制器”):我对此没有规定,但我认为此处仅应处理数据处理和组装/解析错误(生日字段不是有效日期);在此处添加进一步的验证很容易使其变得很无聊。 第二层(业务层):可靠的验证,不少于;输入数据格式,范围,值,内部状态检查(是否可以随时调用方法),用户角色/权限等;使用尽可能少的用户输入数据,如果需要,再次从数据库中检索它;如果我们也将检索到的数据库数据也视为输入,则只有在已知某些特定数据在DB上不可靠或已损坏得足够多的情况下,我才会对其进行验证-强类型化在这里做了大部分工作,恕我直言; 第三层(数据层/ DAL / DAO):从来没有认为这里需要太多的验证,因为只有业务层才可以访问数据(在某些情况下,例如“ param1为true时,param2不能为空”验证);但是请注意,当我的意思是“这里”是指“访问数据库的代码”或“ SQL执行方法”时,数据库本身是完全相反的; 数据库(数据模型):需要充分考虑,强大和自我实施,以尽可能避免DB上的数据不正确和损坏,并具有良好的主键,外键,约束,数据类型/长度/大小/ precision等-我不再赘述,因为他们有自己的私人讨论。 我知道早期的数据验证是不错的并且是性能方面的,但是重复的数据验证是一个无聊的过程,并且我承认数据验证本身很烦人。这就是为什么这么多编码员跳过它或半途而废的原因。同样,如果每个重复的验证并非始终保持同步,则可能是一个错误。这些是当今我更喜欢将大多数验证放到业务层的主要原因,但要浪费时间,带宽和CPU,并要逐案处理异常。 所以,对于这个你有什么想法?反对意见?您还有其他程序吗?提到这样的话题?任何贡献均有效。 注意:如果您正在考虑Java的做事方式,我们的应用程序是基于Spring的Spring MVC和MyBatis(性能和不良的数据库模型排除了ORM解决方案);我计划将Spring Security添加为我们的安全提供程序以及JSR 303(休眠验证器?)。 谢谢! 编辑:在第三层的一些额外的澄清。

5
代码所有权是代码的味道吗?
自从我在有争议的编程观点线程中阅读此答案以来,我一直在思考以下问题: 你的工作是使自己失业。 在为雇主编写软件时,所创建的任何软件都应以任何开发人员都可以选择并以最小的努力理解的方式编写。它经过精心设计,清晰一致地编写,清晰地格式化,记录在何处,按预期每日生成,检入存储库并进行适当版本控制。 如果您遇上公共汽车,下岗,解雇或下班,您的雇主应该能够在短时间内通知您,然后下一个人可能会担任您的职务,接管您的代码,并做好准备。一周之内就可以跑步了。如果他或她做不到,那您就惨败了。 有趣的是,我发现有了这个目标使我对雇主更有价值。我越努力成为可抛弃型产品,我对他们就越有价值。 而且在其他问题(例如这个问题)中也进行了讨论,但是我想再次提出来从更空白的角度讨论“ 这是代码的味道! ”的观点-尚未真正涵盖深入。 我从事专业开发已经十年了。我曾经做过一项工作,代码编写得足够好,可以被任何体面的新开发人员相对迅速地拿到,但是在行业中的大多数情况下,似乎拥有很高的所有权(个人和团队所有权)规范。大多数代码库似乎都缺乏文档,流程和“开放性”,而这将使新开发人员可以选择它们并快速使用它们。似乎总是有很多不成文的小技巧和黑客,只有非常了解代码库的人(“拥有”它)才知道。 当然,明显的问题是:如果该人退出或“被公交车撞上”怎么办?还是在团队层面上:如果整个团队在团队午餐时外出时食物中毒,而他们全都死了怎么办?您是否可以相对轻松地用一组新的随机开发人员代替团队?-在过去的几份工作中,我完全无法想象这种情况的发生。这些系统充满了诡计和技巧,以至于您“ 只需要知道 ”,以至于您雇用的任何新团队所花费的时间远远超过可盈利的业务周期(例如,新的稳定版本)才能使事情恢复正常。简而言之,如果不得不放弃该产品,我不会感到惊讶。 显然,一次输掉整个团队是很少见的。但是我认为所有这一切中还有一个更微妙和危险的事情-这就是让我开始思考这个话题的要点,因为我以前从未看到过这些术语的讨论。基本上:我认为对代码所有权的高度需求通常是技术债务的指标。如果您“必须知道”系统中缺乏流程,沟通,良好的设计,许多小技巧和小技巧,等等-这通常意味着系统正在逐渐陷入越来越深的技术负担。 但是问题是-代码所有权通常被表示为对项目和公司的“忠诚”,是对工作“承担责任”的积极形式-因此,完全谴责它是不受欢迎的。但是,与此同时,等式的技术债务方面通常意味着代码库变得越来越不开放,并且使用起来更加困难。特别是随着人们的前进和新开发人员的到位,技术债务(即维护)成本开始飙升。 所以从某种意义上说,我实际上认为,如果对代码所有权的高度需求被公开认为是一种工作气味(在流行的程序员想象中),这对我们的职业而言将是一件好事。与其将其视为工作中的“承担责任和自豪感”,不如将其视为“通过技术债务巩固自己并创造人为的工作保障”。 我认为测试(思想实验)基本上应该是:如果这个人(或者实际上是整个团队)明天要从地球上消失,该怎么办?这是否会对项目造成巨大的伤害甚至是致命的伤害,还是我们可以招募新人员,让他们阅读doccos和帮助文件并使用代码几天,然后再返回在几周内完成业务(一个月左右即可恢复全部生产力)?

18
停止无休止的技术讨论并做出决定
我总是遇到喜欢在最小的“技术性东西”上花了很多年的人。 不要误会我的意思,我是一个喜欢我所做的事情的怪胎程序员,但是您知道对话的类型。 Mac比Windows好得多 不要使用For Each循环,请使用While循环 不要购买基于Intel的PC,而是购买基于AMD的PC。 我们应该在另一个IoC容器上使用。 所有这些“东西”在双方都有有效的利弊,您将永远不会得到“正确”的答案,而且这个人也永远不会承认这一点。(当然,可能会有一些答案的地方:)。 我的问题(我要到达那里!)是:在一个软件团队中,您如何在不抑制创新的情况下完成这些漫长的讨论,以便可以做出决定,然后继续解决实际的业务问题。


2
如何编写代码文档,为什么软件(通常)文档记录不佳?
有一些很好的示例,这些示例都记录了很好的代码,例如java api。但是,公共项目(例如git和公司的内部项目)中的许多代码都没有很好的文档记录,并且不是很新手。 在我所有的软件开发工作中,我不得不处理文档记录不佳的代码。我注意到以下情况- 代码中很少或没有注释。 方法和变量名不是自描述的。 很少或没有文档说明代码如何适合系统或业务流程。 雇用不良的开发者或不指导好的开发商。他们不能编写简单干净的代码。因此,包括开发人员在内的任何人都很难或不可能编写代码。 结果,我不得不阅读大量代码并与许多人交谈以学习事物。我觉得这浪费了大家的时间。它还为项目的新手带来了KT /知识转移会话的需求。 我了解到,由于以下原因,文档没有得到应有的重视: 懒惰。 开发人员只喜欢编写代码就什么都不喜欢。 就业保障。(如果没有人能轻易理解您的代码,那么您可能就很难被替换。) 艰难的截止日期几乎没有时间记录在案。 因此,我想知道是否有一种方法可以鼓励和执行公司或项目中的良好文档规范。无论项目的复杂性如何,用于为任何项目的系统和代码创建体面文档的策略是什么?有什么很好的例子,说明什么时候需要最少的文档或根本不需要文档? 恕我直言,我认为我们应该在项目交付后对文档进行审查。如果它不简单,简洁,说明性和用户友好性,则开发人员或技术文档工程师将对此负责,并负责对其进行修复。我既不希望人们编写大量文档,也不希望它像第一本书一样对用户友好,但是我希望它消除了数小时的分析和浪费的KT会话。 有没有办法结束或减轻这种疯狂?也许是“文档驱动的开发”?

4
为什么不建议在同一期/票证中张贴多个缺陷?
我不确定这是否是提出以下概念性问题的地方(肯定不是Stackoverflow)。 我在多项选择题考试(单一答案)中看到了这个问题,类似于ISTQB考试: 为什么不建议在同一期/票证中报告多个缺陷? 一种。为了使报告简洁明了。 b。因为开发人员可能只修复一个错误。 C。因为测试组测试人员是根据发现的错误数量进行评估的。 d。错误管理系统不支持多个错误的此功能。 我唯一的意见是a正确的答案。 b-不能这样,因为fix-feedback-resolved-closed应该避免这种情况。 c-显然是错的。 d -Redmine / Trac插件支持多个字段。 根据答题纸的答案是b。 有人可以解释为什么吗?欢迎对评论提出意见。


11
时间估计出错时该怎么办?
假设您估计一个案件的时间为3天。在第二天中,您会注意到情况不断增长,并且弹出了新的方案,这些新方案在进行时间估算时并未计算在内。新的发现导致额外的2天(总共5天)。这是一个典型的问题,您作为开发人员迟早会遇到。 当您要通知项目负责人新的交货时间时,可以使用哪种策略? 通常您会得到一个问题,为什么?您如何激发新的交货时间? 事实是,在SDLC期间,许多项目没有花太多时间进行分析和设计。 编辑: 在非常复杂的项目中,无论您花费多少合理的时间进行分析与设计,由于业务规则过于复杂,总是会感到意外。但是,在这种情况下,我认为项目负责人必须意识到复杂性,并在出现意外情况时保持正确的态度。问题是如何应对那些不了解复杂性的项目负责人。

7
软件重用是否会妨碍流程的可重复性
代码重用成为问题 我一直在思考有关软件交付的问题,并且我一直回到可重复性和/或可再现性的问题。它们很重要,因为如果您不重复一个项目,那么改善用于构建项目的流程就变得更加困难。工程涉及不断改进与设计和施工有关的过程,以产生更高质量的项目。 由于其数字形式,软件可能严重依赖于重用。无需重写模块,我们只需再次调用它或将其复制到另一个系统即可。一些示例是身份验证/登录或登录功能。这些类别有许多众所周知的示例,并且传统的智慧是重用现有内容而不是自己动手做。 与其他学科的一些比较 施工 相反,物理系统(建筑物,桥梁)的构建远没有可重用的范围。确实,房屋的蓝图可以重复使用多次以建造房屋的相同副本,但是必须每次都执行建造。剪切和粘贴在模拟世界中不像以前那样工作。桥梁的蓝图比房屋的可重复使用性差,因为场地条件会有所不同。 大师级建筑商是公认的专家,他们在他们所在的地区设计和/或建造了数十,数百或数千个事物。例如,世界著名的建筑师兼设计师Frank Lloyd Wrightdesigned more than 1,000 structures and completed 532 works。与设计了“仅”五种语言(Turbo Pascal,Delphi,J ++,C#,Typescript)的Anders Hejlsberg形成对比。在很多方面,这是不公平的比较,因为域是不同的。但是从广义上讲,两个非常有才华的人的可量化生产差异很大。 武术 武术家会说,对动作的精通仅来自数千次重复。在完成大部分重复之后,许多武术家对于以前被认为是复杂的kata或形式变得如此简单感到惊讶。这些学生的讲师还将注意到运动如何变得更加流畅和有目的性,以及运动的经济性。同样,与没有经验的学生相比,经验丰富的武术家能够更快地拾起更复杂的kata。重复的经验为他们提供了一个框架或过程,使他们可以更快地学习。 木工 木工经历了类似的转变。业余爱好者木工总是回想起他们的第一个需要大量抽屉的项目。如果他们完成了该项目,他们将对装配线产生的效率重新获得赞赏。还有其他好处,例如更好地了解如何在单张纸料上放置抽屉部件,以最大程度地利用木材。与业余爱好者相比,专业的木工可以更快地设计,开始和建造他们以前多次制作的物品。他们还具有查看他人设计中固有错误的能力,而这些错误是他们工作中的错误。 那么,软件重用会阻止软件开发人员变得更加熟练吗? 在许多方面,软件设计和构建始终是新的。我们不会重复过去的工作,因为如果我们可以重用模块,库或系统,那么我们会做。在从头开始重写整个内容之前,我们将优先扩展现有系统。但是重复是使我们能够发现设计和构造效率的原因。任何进行过体育锻炼或体育锻炼的人都会告诉你,重复锻炼是成为一名优秀练习者的关键。 我的问题:软件的重用能力是否会阻止重复项目带来必要的流程改进和效率?

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.