Questions tagged «rewrite»

25
BIG何时重写答案?
刚读了有关“大改写”的问题,我就想起了一个我想自己回答的问题。 我有一个可怕的项目,传给我,是用Struts 1.0用旧Java编写的,表具有不一致的关系,或者根本没有关系,甚至没有主键的表也没有要用作主键的字段,但并不是唯一的。大部分应用程序都以某种方式“正常工作”。大多数页面被重用(复制粘贴的代码)并进行硬编码。曾经从事该项目的每个人都以一种或另一种形式诅咒它。 现在,我长期以来一直在考虑向高层管理人员建议对这个可怕的应用程序进行完全重写。我正在慢慢尝试个人时间,但我真的觉得这值得一些专门的资源来实现。阅读有关大型重写的文章后,我有了第二个想法。当我想说服上级支持我的重写时,这不是很好。(我在一家很小的公司工作,因此该提案有可能获得批准) TL; DR什么时候可以重写答案,您可以使用哪些参数来支持它?

21
我的代码大部分都存在主要的设计缺陷。完成还是现在修复?[关闭]
我是一名高中生,和我的一个朋友一起从事C#项目,他的技能与我差不多。到目前为止,我们已经在100次提交中编写了大约3,000行代码和250行测试代码。由于学校的原因,我推迟了几个月的项目,最近我又可以将其重新备份。 备份时,我了解到我编写的代码设计不良,例如在渲染器中包含过多线程,在模拟CPU,GPU和游戏卡带之间的交互中无法很好地防止竞争情况,以及仅仅是多余和令人困惑的代码。 问题是我什至没有完成程序的主要功能,所以我无法真正重构,因此我不鼓励继续完全意识到我的代码设计有缺陷。同时,我不想放弃该项目。已经取得了很大的进步,工作绝不能浪费。 我似乎有两种选择:通过解决不良的设计来简单地完成功能,然后在一切正常进行后进行重构,暂停一切并在完成其余功能之前努力解决一切,开始项目到处都是新鲜的东西,或者由于项目过大(基本上是“回到绘图板”)而彻底放弃该项目。 根据他人在此类项目中的经验,如何使自己重回正轨?根据该站点上的答案,普遍的共识是,通常不需要重写,但是如果不能在不付出过多成本的情况下维护代码,则可以使用重写。我确实很想继续这个项目,但是就目前而言,我的代码设计得不够好,无法继续进行下去,而沮丧的情绪使我无法继续进行下去。

13
您是否曾经参与过BIG Rewrite?[关闭]
乔尔·斯波斯基(Joel Spolsky)在他的一篇著名文章中说: 任何软件公司都会犯的最严重的战略错误:从头开始重写代码。 乍得·福勒写道: 您已经看过视频,博客文章和炒作,并且决定将在Rails(或Java,.NET或Erlang等)中重新实现产品。 谨防。这是比您期望的更长,更难,更容易出现故障的路径。 您是否曾经参与过BIG Rewrite? 我对您在这个悲剧性主题方面的经验特别是对成功完成的任何大重写(如果有)感兴趣,都感兴趣。
55 rewrite 

5
是否有关于重写软件成功/失败率的实际案例研究?
我已经看到多篇关于应用程序重写的文章,这些都是不好的,人们在Programmers上的经历,以及Joel Spolsky编写的关于该主题的文章,但没有确凿的证据或案例研究。除了Joel给出的两个示例以及此处的其他一些帖子外,您如何处理不好的代码库,以及如何根据实际研究决定如何处理它? 就目前的情况而言,我知道有两个客户端都具有旧的遗留代码。他们一直之以鼻,因为正如其中之一发现的那样,重写是一场灾难,这很昂贵,而且实际上并不能有效地改善代码。随着重写者迅速发现,该客户具有一些非常复杂的业务逻辑。 在这两种情况下,这些都是关键任务应用程序,可为公司带来大量收入。试图重写的人认为,如果将来某个时候不对旧版软件进行升级,它们将陷入困境。对我来说,这种风险需要进行研究和分析,以确保成功的道路。 是否有实际的案例研究对此进行了调查?我不希望尝试大量重写,而无需根据实际研究了解一些最佳实践,陷阱和成功。 后果: 好的,经过更多搜索,我确实找到了三篇有关案例研究的有趣文章: 重写或重用。他们对转换为Java的Cobol应用程序进行了研究。 另一个是关于软件重用:开发人员的经验和看法。 重用或重写关于维护与重写成本的另一项研究。 我最近找到了另一篇有关该主题的文章:The Great Rewrite。在那儿,作者似乎遇到了一些主要问题。随之而来的是通过使用建议的新技术堆栈并测量开发人员将其拿起的速度来进行原型制作的想法。这全都是重写的序幕,我认为这是个好主意!

3
重写的版本控制实践
我们用语言X开发了产品(原型)P_OLD,现在我们正从头开始用语言Y将其重写为P_NEW。 由于P_NEW和P_OLD是同一产品: P_NEW应该只是旧的P_OLD分支还是应该是它自己的存储库? 从版本控制角度来看,处理如此大的更改的通常方法是什么?

2
我们有一个大型的Ruby on Rails应用程序(每月有2500万用户),我们的管理层决定在Node.js中重写,我疯了吗?
请告诉我是否: Node.js将使我们的网站更快! Node.js将消耗更少的服务器资源,我们可以节省金钱! Node.js将使我们的生产力更高! Node.js意味着我们可以共享客户端和服务器端JavaScript代码。 为了澄清起见,我们正在重写前端服务器,该前端服务器将作为API与我们现有的Ruby on Rails应用程序通信。同时,我们将Ruby on Rails应用程序重构为服务。 现有架构的更多详细信息: Memcached用于HTML部分缓存 Redis用于会话和一些结构化数据缓存 MySQL单主机,多从机 有一张大桌子可以接受大量写操作(想象一个民意测验) 否则大多读。 MongoDB中的一些元数据 Ruby on Rails 3.0 Nginx和独角兽

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

7
如何避免重写应用程序的各个部分
我在一家公司的销售部门项目中工作。这是我的第一份专业编程工作,但是我一直在自己编码并学习多年。该项目的一部分涉及获取一些数据,并将其与输入相结合以生成图形。然后保存数据……依此类推。因此,我花了不到一天的时间为此编写了代码。第二天,我展示了我的项目主管,他喜欢它,但是“如果有的话”,并希望我在图表中添加一些内容。这对程序的外观或功能没有太大的改变,但是它极大地改变了我存储数据,处理数据等的方式。 再次,我花了一天的时间来重新组织数据库表,并基本上从头开始重写代码以支持此新请求。我又把它还给了他,同样的事情发生了。他提出了其他要求,这些要求极大地改变了我处理数据的方式。因此,我不得不再次重写它。最终,他签署了该协议,希望我不必再次重写它。 请清楚,我不是在殴打我的经理或类似的人。他是一个伟大的人,他所要求的东西并没有超出这个世界,它们与我以前所做的不相容。 我只是想知道将来是否可以做些什么来避免完全重写。我了解制作灵活的代码并且正在尝试这样做,但是我想知道我可以做些不同的做法或事情来简化此工作,因此,将来,我不会花3天时间去做一些应该吃1。

6
使用敏捷方法重写软件
假设您必须使用敏捷方法重写整个应用程序,您将如何做? 我猜您可以根据当前系统的行为编写大量用户案例。然后以小的迭代形式实现它们。但这并不意味着我们具有UP FRONT的要求? 另外,什么时候开始发布?敏捷说我们应该早并且经常发布,但是在完全重写完成之前发布并没有多大意义。

6
功能需求不足是否敏捷?
如今,每个人都希望变得敏捷。在与我合作的每个团队中,敏捷的形式都不同。有些事情很常见-例如日常站立或计划,但其他部分则有很大差异。 在我目前的团队中,有一个细节令我感到困扰。缺乏功能要求。不仅没有书面形式的期望,而且在任务中模糊地定义了需要完成的工作。 该项目的目标是使用新技术重写旧系统。旧系统也没有任何合理的文档。当然,最新的不存在。企业主对需求的描述是-让我们在新实现中以与旧实现相同的方式进行。似乎合理,但事实并非如此。旧系统是一种意大利面条式代码,从中提取业务需求非常昂贵。看来情况对计划产生了负面影响。当然,在新的实现中容易出错和出错(省略一些细节)。 因此,我在想-在重写旧系统的情况下,没有业务需求真的很敏捷吗?

4
重构-只要所有测试都通过,简单地重写代码是否合适?
我最近看了RailsConf 2014的“ All Little Little”。在这次演讲中,Sandi Metz重构了一个包含大型嵌套if语句的函数: def tick if @name != 'Aged Brie' && @name != 'Backstage passes to a TAFKAL80ETC concert' if @quality > 0 if @name != 'Sulfuras, Hand of Ragnaros' @quality -= 1 end end else ... end ... end 第一步是将函数分解为几个较小的函数: def tick case name when 'Aged …
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.