Language agnostic 如何处理用蹩脚代码编写的优秀产品?

Language agnostic 如何处理用蹩脚代码编写的优秀产品?,language-agnostic,Language Agnostic,我被要求改进和维护一个由重要用户社区使用和批准的内部Web应用程序。这包括性能改进和添加功能 不幸的是,代码过于臃肿,有时写得很糟糕,很难阅读和修改。这使得更改更难实施 尽管如此,该应用程序外观美观、实用,用户喜欢并希望进行更改 这就是为什么我觉得自己被愚弄了。写蹩脚的代码以获得更快的好结果和荣耀,然后去做伟大的新项目,留下如此多的问题,真的更好吗 关于这个话题,我已经读了很多,但我想从这里的人们那里读更多,他们正在经历这个悲惨的现实,以及他们是如何处理它的。我可能也需要一些勇气;) 由于我的主

我被要求改进和维护一个由重要用户社区使用和批准的内部Web应用程序。这包括性能改进和添加功能

不幸的是,代码过于臃肿,有时写得很糟糕,很难阅读和修改。这使得更改更难实施

尽管如此,该应用程序外观美观、实用,用户喜欢并希望进行更改

这就是为什么我觉得自己被愚弄了。写蹩脚的代码以获得更快的好结果和荣耀,然后去做伟大的新项目,留下如此多的问题,真的更好吗

关于这个话题,我已经读了很多,但我想从这里的人们那里读更多,他们正在经历这个悲惨的现实,以及他们是如何处理它的。我可能也需要一些勇气;)


由于我的主要语言不是英语,请随意用更好的语法重写此问题。

为产品编写一个测试套件,这样您就可以更加自信您没有破坏任何东西

然后重构代码中最糟糕的部分,或者无论如何都需要修改的部分

但是,考虑一下“如果它没有坏掉,不要修理它”,如果一个区域在工作,而你不需要改变它,那么考虑引入问题的风险是否超过了使它变得“好”的好处。
找到最初的开发人员,引诱他们进入黑暗的小巷:)或者更好,让他们做些改变

是的,一些写得不好的程序很受欢迎。缺点是,随着时间的推移,这类应用往往更难改进(例如在扩展、添加新功能、修复错误等方面)

但是不,写垃圾代码是不好的。识别用户想要什么,给他们一个好的界面,使代码易于维护,这是很好的。有时候,这可能意味着用户需要等待更长的时间才能获得新功能,尤其是在早期,但从长远来看,您将能够完成更多的工作


对你来说,我建议你试着一次提高一点。如果可以,划出一个区域并“修复”它,确保它永远不会回到“糟糕的过去”。然后开拓下一个领域,等等。最终你会有一个写得很好的应用程序。与从头开始重写相比,这可能需要更长的时间,但您可以在编写过程中为用户提供改进,并且您将更有信心在任何时间点将其作为一个工作系统。

几乎每一位开发人员,无论何时何地,在介绍一些他们没有编写的代码时,想重写它来修复那些糟糕的地方

克制你重写一切的冲动,修复那些破碎的部分。当你必须维护它们时,处理无法维护的位

坏代码是;它的编写成本可能会更低,但维护成本会更高(除非您通过重构或重写来偿还债务)


您可能会获得更快的结果和荣誉,但当用户以后想要更改时,您将不得不花费更多的精力来进行更改(或修复不可避免的错误)。

我为一些项目编写了蹩脚的代码。然而,明智的“坏”代码。糟糕的代码可能是由很多原因造成的,不仅仅是个人的技能。(好吧,大多数情况下是因为技能)

如果你有足够的时间并且没有来自业务的压力,程序员可以编写非常好的代码。然而,商务人士并不欣赏好的编码,而是欣赏它的功能和外观。我认为“蹩脚”的程序员是一个聪明的人。简单地说,他开发了解决方案模型,让软件在短时间内运行起来,我想这也让雇主很高兴!!如果让程序员再写一遍,他/她可以做得更好

首先, 你需要说服自己去欣赏早期程序员已经经历过的许多事情,如果你是一个成熟的开发者,这是一个需要考虑的问题。大多数人抱怨,甚至嘲笑现有版本,因为他们知道他们可以做得更好。这就像用你的想象力在一张白纸上画画,或者复制现有的绘画。哪一个更难

其次, 全面查看代码并找出可以改进的地方,您可能会发现一些误解

第三, 路线图增强,它可以包含最近和未来的TODO

最后, 开始计划如何改进,如果您从头开始设计,新的体系结构等,并在准备就绪且全面时将其提交给管理层


每个软件都有改进的余地,这就是为什么你被雇佣来改进它。

确保你的管理层和用户知道,从可变性的角度来看,代码的质量是不够的。在估计实现新功能所需的时间时,请始终明确说明清理受影响代码所需的时间。

“尽管如此,应用程序外观良好,有用,用户喜欢并希望更改”

该应用程序显然为客户提供了他们想要的东西,但听起来似乎已经到了无法维护的阶段

我认为除了无情地重构之外,没有别的方法了。如果您顶住同时添加任何非琐碎功能的压力,这可能会更容易,也不会那么痛苦。一定要告诉管理者,尽管软件很好,但它有变成一大堆无法维护的积垢的危险

进行代码改进通常会引入一两个错误,但从长远来看,这将为您节省大量的大脑损伤。获得尽可能多的额外眼球来帮助测试和调试,并坚持先做真正糟糕的部分

如果以前的任职者还没有引入单元测试,那么可以考虑引入单元测试,这样您就更有信心