我有一个刚刚发布的应用程序。自从我写了它,我就了解了 amfphp 和 propel。两者都可以在应用程序中使用,但我不能说此时需要它。
在重构代码之前,您会考虑哪些类型的事情?
我有一个刚刚发布的应用程序。自从我写了它,我就了解了 amfphp 和 propel。两者都可以在应用程序中使用,但我不能说此时需要它。
在重构代码之前,您会考虑哪些类型的事情?
重构后进行单元测试以检查代码。
所需的努力与获得的收益以及它与其他工作的优先级。
我是不是该?
仅仅因为我可以重构代码并不意味着我应该重构代码。在很多很多情况下,还有更重要的事情需要做。就像修复缺陷一样。
现在,如果我们谈论重构代码,因为我已经在那个特定的代码块中,并且作为缺陷解决或代码维护的一部分来处理它,那完全是另一回事。但是仅仅为了重构而重构?这听起来像是因为无聊而忙碌的工作。当然,您没有空的缺陷列表。
重构代码的可维护性如何。后见之明是 20/20,但对于已发货的产品,优雅但神秘的设计可能是维护的噩梦。此外,重构设计中的灵活性以允许功能增强也非常重要。
我破坏现有功能的可能性有多大?单元测试在这里是一个很好的安全网,自动重构工具也是如此。
之后代码真的会更容易理解和维护吗?这可能是一个很难回答的问题,需要经验才能更好地回答。
在源代码管理中为当前生产代码库创建一个分支,并在源代码管理的实验分支中进行所有重构。
单元测试会非常好,但是如果单元测试没有覆盖代码,你应该有一些其他的方法来确保你不会破坏代码。如果您能够获得生产数据库的副本,甚至可能是一些实时产品输入,那么您应该有一个公平的机会。
在一个 privious 项目中,我们实际上记录了 14 天的所有传入数据,并在这 14 天的开始和结束时保存了 prod db 的快照,然后我们能够使用旧代码和新代码比较数据库的状态. 但是单元测试肯定会消除一些恐惧:-)
我嗅探代码。如果我不喜欢这种气味(换句话说,它闻起来不像我),那么我会在它身上撒尿,直到我喜欢它为止。
由于软件技术需要很酷的名字,比如敏捷或设计模式,我称之为犬重构。
重写代码后,我自己使用了一段时间,吃我自己的狗粮。
我必须给Drejc +1。不重构的最主要原因是你没有单元测试。但即使这样也不意味着你不应该重构。我应该说,我的作案方式首先是代码功能,然后总是重构以处理设计债务。重复令人作呕。
“足够好”的模式可能是地球上最常用的编程方法,这也是我们的软件有缺陷和混乱的原因之一。我们总是选择最少能量的“步”,而不是选择能量最少的“路径”。
但是,当心!没有适当工具的重构(这将取决于语言和 IDE)就像敲钉子一样:您可以到达那里,但它不会有效(并且您可能会遇到麻烦)。