Ruby on rails 你如何说服你的经理你的项目需要一个巨大的重构?

Ruby on rails 你如何说服你的经理你的项目需要一个巨大的重构?,ruby-on-rails,ruby,refactoring,Ruby On Rails,Ruby,Refactoring,我作为承包商参加了一个铁路项目。这个项目已经进行了一年多。该代码由大约10名不同的开发人员编写,其中大多数也是承包商。它们有不同的代码风格。其中一些来自爪哇。代码在度量衡上的分数很糟糕。许多函数非常长(100-300行)。有些函数有大量的逻辑分支、循环和递归。每个请求都会生成大量sql查询。表现很差。许多过时的代码从未使用过,但从未得到清理的机会。核心架构显然是错误的或设计过度。代码覆盖率只有25%左右。观点和部分内容混乱不堪,难以阅读和理解 经理正试图通过不断添加新功能来满足CEO的要求,但是

我作为承包商参加了一个铁路项目。这个项目已经进行了一年多。该代码由大约10名不同的开发人员编写,其中大多数也是承包商。它们有不同的代码风格。其中一些来自爪哇。代码在度量衡上的分数很糟糕。许多函数非常长(100-300行)。有些函数有大量的逻辑分支、循环和递归。每个请求都会生成大量sql查询。表现很差。许多过时的代码从未使用过,但从未得到清理的机会。核心架构显然是错误的或设计过度。代码覆盖率只有25%左右。观点和部分内容混乱不堪,难以阅读和理解

经理正试图通过不断添加新功能来满足CEO的要求,但是新功能越来越难以在不破坏其他功能的情况下正确实施。他知道代码不好,但不想花太多精力来修复它们,因为重构将花费太长时间

作为一个承包商/开发人员,有什么好方法可以消除这种情况并方便经理或CEO分配一些时间进行重构

相关问题


我也遇到过类似的情况。基本上只有两种选择:

  • 你会有一些放松的时间,你可能会有时间重构一些东西
  • 由于代码错误,某些组件的进一步开发陷于停顿。您无法继续添加任何内容,因为每一个微小的更改都会导致其他所有内容停止运行。在这种紧急情况下,您将“尝试”重构
我刚刚回答了另一个问题,我的恐怖故事:

我曾参与过一个项目,其中肮脏的把戏是开发的主要驱动原则。不用说,过了一段时间,这些技巧开始相互冲突。在一个分析组件中,我们必须实施另一个非常肮脏的把戏——隐藏那些由于相互冲突的把戏而没有正确计算的计算值。之后,第二级技巧开始冲突,我们必须创造技巧来处理这些问题。从那以后,甚至提到这个组件都让我感到恐惧,因为我可能不得不再做一次

这正是第二种情况,重构是唯一的出路


一般来说,许多没有技术背景的经理(实际上,那些来自差劲程序员的经理)既不关心也不理解高质量代码和良好体系结构的价值。除非有什么事情打断了他们的计划,比如“无法实现”的特性、不断增加和重复出现的bug、无法满足的客户请求等等,否则你无法让他们倾听。只有这样,才能第一次理解代码问题。通常,到那时已经太晚了。

我会拿出一小块应用程序,对它进行重构和优化,直到它发光为止(我会在自己的私人时间内这样做,以免惹恼我的经理)。然后,您将能够向您的经理/首席执行官展示重构和SQL优化的良好结果。

如果需要重构,那么代码本身就是明证。在开发过程中,可以继续进行较小的重构。如果你不能说服经理,那么你可能应该重新考虑是否有必要


但是,如果绝对有必要,那么构建开发活动的指标和好处应该能够说服经理。

以我有限的经验:

  • 要让经理相信有必要留出时间进行重构是不可能的。您可以让他意识到这一点,并在每次因为错误代码而遇到问题时强调这一点。那就继续吧。希望你的老板能弄明白

  • 参与一个正在运行的项目并认为“这完全是垃圾”是很常见的。给点时间。你可能开始在疯狂中看到一种模式


  • 我认为其中一个选择是向经理强调,从长远来看,现在重新分解代码库将如何节省时间(即金钱)。如果项目希望长期运行,那么现在进行更改显然会在将来为您和其他开发人员节省时间


    最好使用一个您曾经使用过的特性的例子,来估计如果您首先使用更干净的代码,需要多长时间。祝你好运

    一个棘手的问题,我最近在这样一家公司工作。。。他们总是在推动新事物,他们也知道这是不好的,但不管我怎么努力,我甚至让外部顾问来验证我的发现,他们认为这是浪费时间

    最终他们看到了光明。。。它只需要多次服务器崩溃,并且一度几乎整整8天没有网站就可以说服他们

    即便如此,他们还是坚持认为“必须”是托管服务


    关键是要尝试并量化他们的网站在崩溃前能持续多久,并获得一些外部验证来支持你——“他们”总是信任那些对你的应用一无所知的外人!此外,如果可以的话,试着给出一个最坏情况下需要逐步更换的计划,以及这样做需要多长时间的计划。还有一个计划,如果一个或两个机构正在进行一个完整的重写可能需要很长时间-但要现实一点,否则它会咬你的屁股!如果你走这条路(这就是我们所做的),你仍然可以在现有网站上做一些工作,只要你把它合并到新网站上。

    我建议你把重点放在他们自己能看到的东西上,也就是说,他们肯定会注意到应用程序在某些功能上很慢,因此,拿起其中一个,说“我可以减少这里的等待时间,我可以花一些时间来改进这个特定的事情吗?”