重构重构与设计

如题所述

在软件开发的旅程中,重构(Refactoring)与设计是两个相互补充的角色。最初,编程新手往往专注于编码,忽视了设计的重要性。然而,通过实践,人们发现“预先设计”(upfront design)是提高开发效率的关键,它能避免后期大量返工。许多人倾向于将设计视为软件的核心,而编程被视为执行的低层次工作,类似于绘制工程图和施工。然而,软件与实体机械不同,它具有高度的可塑性和思维性质,正如Alistair Cockburn所说,设计能加速思考,但易有小瑕疵。


一种观点认为,重构可以替代预先设计,主张直接编码,再逐步优化。极限编程(Extreme Programming,XP)的支持者支持这种策略,确实有人通过这种方法成功构建出设计良好的软件。然而,尽管重构确有成效,但它并非设计的替代品。即使是XP倡导者,也会在重构前进行一些形式的设计,如使用CRC卡进行初步评估。重构的作用在于,它减轻了对预先设计完美性的要求,允许在实现过程中逐步优化,降低修改成本。


当你选择重构时,设计的目标不再是寻找绝对正确的解决方案,而是寻求一个可行且足够灵活的起点。在实施过程中,你的理解会深化,可能发现最初的设想需要调整。重构就像一把武器,帮助你应对变化,降低了设计的复杂性和压力。这意味着设计变得更简单,同时也保持了必要的灵活性,使得设计过程更为高效。


重构改变了我们对设计的理解,不再追求过度复杂的灵活性,而是寻求简单和易维护的解决方案。正如Ron Jeffries所言,过分追求灵活性可能导致系统的复杂度和维护难度增加,而重构允许在必要时才增加复杂性。在Chrysler Comprehensive Compensation案例中,通过重构,团队发现了问题的真正根源并迅速解决了问题,而非基于猜测进行设计改动。


总结来说,重构和设计不是对立的,而是相辅相成。重构提供了一种方法,帮助我们在设计过程中更加灵活,降低修改成本,实现更简洁、易维护的软件。在实际操作中,既要考虑可能的变化,也要注重量测和验证,而非仅凭猜测进行设计。通过实践和经验,我们可以更好地理解和利用重构与设计之间的关系。
扩展资料

重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。另有同名图书。

温馨提示:答案为网友推荐,仅供参考
相似回答