微信号:infoqchina

介绍:有内容的技术社区媒体

大多数重构可以避免

2013-03-12 16:27 InfoQ

做为马可波罗采购搜索技术副总裁,前搜狗技术负责人,郭昂在技术人生中主持和经历过十余次重构,涉及代码和架构。

为什么要重构?

在糟糕架构下加进新功能,会受之前代码的影响,开发效率越来越低下,整体代码质量也越来越糟。

重构能解决哪些问题?

  • 结构糟糕:五千行以上的文件,三千行以上的函数,面对这样子的代码,对其进行修改和继续开发是件很艰难的事情。

  • 安全隐患:很多代码,为了快速完成功能,对很多潜在安全风险置之不管,如内存管理、异常处理、模块接口等,迟早有一天会爆发。

  • 性能问题:对于很多大型服务,性能高一点可以节省很多服务器费用。性能的核心问题大多在出代码上。

  • 功能扩展:有的模块,开始设计时只是实现一些很基本的功能,而随着产品功能不断增强,需要进行重构以让其能够实现新赋予的任务。

  • 协同开发:大系统需要多人一起开发,如果需要改同一个类甚至同一个函数,往往是冲突不断,而代码的整合往往也会存在更多问题。这时候需要很好的架构能够支持多人共同开发和修改。

  • 模块调试:大系统中有很多子模块互相关联,假如某个模块的调试需要启动整个大系统,或者会受到其他模块稳定性的影响,效率非常低。通过重构建立调试层,或者开发调试工具是更好的选择。

  • 模块复用:不同项目或模块重复开发相同功能子模块,在很多公司都很常见。将公共部分抽象出来,能够将这部分做得更好更精,从整体上,往往能大幅度提高开发效率和效果,往往也能优化算法性能。

  • 算法使用不当:使用不恰当的数据结构或者相关算法,会使得性能或效果出现问题。这种情况,甚至要将原有的体系结构推倒重来,重新设计算法和数据结构,达到尽可能好的匹配效果。

  • 承载规模不够:一些系统有其设计的容纳规模,例如瞬间访问量、同时在线人数,当超过一定量级时,很多时候并非简单通过加服务器能解决,有时需要重新设计架构。

如何说服老板支持重构?


让重构与某些技术或产品指标挂钩,例如完成新产品、改进效果、提高性能等。以月为单位,快速迭代以降低风险。不要有技术完美主义的念头!


但是实际上,大多数的重构都是可以避免的。这需要从以下几个方面去提高:

  • 良好的编码风格。

  • 初期的架构设计。

  • 程序员的自我修养。

点击“阅读原文”查看更多内容并吐槽吧。


架构师3月刊已发布,回复【架构师】查看最新内容。

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 成都下周全城整治清理“烈性犬”
猜您喜欢 【前端性能】高性能滚动 scroll 及页面渲染优化 【ITA1024前端精英群】京东资深前端架构师分享前端工程化在电商首页中的实践 协同写作的力量——中国开发者9天完成《Swift语言》中文版 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建 嘿,兄台!想不想成为测试经理?-清晨每日分享-吴老电台