gpt4 book ai didi

language-agnostic - 如何重构一个庞大而困惑的代码库?

转载 作者:行者123 更新时间:2023-12-03 07:16:45 24 4
gpt4 key购买 nike

我有一大堆乱七八糟的代码。诚然,这是我自己写的——一年前。它没有得到很好的评论,但也不是很复杂,所以我可以理解它——只是还不够好,不知道从哪里开始重构它。

我违反了我在过去一年中读到的每一条规则。有些类具有多重职责,有间接访问(我忘记了这个术语 - 像 foo.bar.doSomething() ),并且就像我说的那样,它没有得到很好的注释。最重要的是,这是一个游戏的开始,所以图形是与数据耦合的,或者说我试图将图形和数据解耦的地方,我把数据做了public为了使图形能够访问它需要的数据...

真是一团糟!我从哪说起呢?你会如何开始做这样的事情?

我当前的方法是获取变量并将它们切换为私有(private),然后重构损坏的部分,但这似乎还不够。请提出其他策略来度过这个困惑,并将其变成干净的东西,以便我可以继续我离开的地方!

<小时/>

两天后更新:我一直在为我的类绘制类似 UML 的图表,并在此过程中捕获了一些“容易实现的成果”。我什至发现了一些新功能开始的代码,但当我试图精简所有内容时,我已经能够删除这些代码并使项目感觉更干净。在装配我的测试用例之前,我可能会尽可能多地进行重构(当然,只有那些 100% 确定不会影响功能的东西!),这样我就不必重构测试用例了改变功能。 (您认为我做得对吗?还是在您看来,我会更容易忍住并先编写测试?)

请投票选出最佳答案,以便我公平地评分!您也可以随意将您自己的答案添加到一堆答案中,还有空间!我会再等一天左右,然后可能会将得票最高的答案标记为已接受。

感谢迄今为止所有回复的人!

<小时/>

2010 年 6 月 25 日:我发现 a blog post它直接回答了一个似乎对编程有很好掌握的人的问题:(或者也许没有,如果你读过他的文章:))

To that end, I do four things when I need to refactor code:

  1. Determine what the purpose of the code was
  2. Draw UML and action diagrams of the classes involved
  3. Shop around for the right design patterns
  4. Determine clearer names for the current classes and methods

最佳答案

给自己挑选一份 Martin Fowler 的 Refactoring 。它对解决重构问题的方法提供了一些很好的建议。本书大约 75% 的内容是您可以执行的小菜谱式重构步骤。它还提倡自动化单元测试,您可以在每个步骤之后运行这些测试来证明您的代码仍然有效。

至于开始的地方,我会坐下来画出你的程序的高级架构。您不必迷恋详细的 UML 模型,但了解一些基本的 UML 也不错。您需要对主要部分如何组合在一起有一个总体了解,以便您可以直观地看到解耦将在哪里发生。只需一两页的一些基本框图就可以帮助缓解您现在的压倒性感觉。

如果没有某种高水平的规范或设计,您就会面临再次迷失方向并最终陷入另一个无法维护的困惑的风险。

如果您需要从头开始,请记住您永远不会真正从头开始。您有一些代码以及您第一次获得的知识。但有时,从一个空白项目开始并边做边拉东西确实有帮助,而不是在困惑的代码库中灭火。只是记住不要完全扔掉旧的,利用它的好部分,并在使用时将它们拉入。

关于language-agnostic - 如何重构一个庞大而困惑的代码库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2981750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com