项目设计&重构&性能优化
漫谈项目设计&重构&性能优化
重构的好处:
重构能够改进软件设计,随着项目需求的变更,项目体积的变大早已与最初的设计大相径庭,代码结构变得凌乱、复杂,如果不进行重构,则很难添加新的功能。
1、使项目代码更容易理解
很多情况下是由于项目赶进度和不注重质量导致的。那么通过重构可以帮助代码维持自己该有的形态。
项目开始的时候,设计并没有考虑到方方面面,因为你不可能预测到后面的所有需求。同时你也不能把每个功能都做预留,做成灵活可变,如果最后你预测失败,那么意味着你所做的灵活性是多余的,浪费了时间且增加了开发难度。这种情况叫做过度设计。
为了避免这样的情况,项目之初只做必要的设计。随着项目的变更,软件结构需要重新调整。通过重构可以改良最初的设计,使得项目符合最新的需求。
经验告诉我们,当下只管建造可运行的最简化的系统,至于灵活而复杂的设计,多数时候你都不会需要它。
2、帮助你找到BUG
重构需要你深入代码结构,这样使得你搞清楚程序结构的同时,找出隐含的BUG。
3、重构提高编码速度
重构后的代码,代码结构被改良,良好的设计能够加快开发速度。
重构与性能优化:
重构是为了让代码易于理解,你常会做出一些使程序运行变慢的修改。
重构的过程中,不要同时最求优化性能。特别当重构代码优化与性能优化两者出现冲突的时候
通常情况下重构会使代码优雅,性能优化为了提高性能不得不采用一些技巧来实现从而有可能使得代码变得复杂
而且,有时性能好坏不是单凭感觉出来,多了几个for循环带来的性能下降通常没有你想象中那么大,一定要量化,能测出数据来证明是否由此导致的性能下降。
此时要注意我们的目的是重构,重构的手法可能会使得软件性能有所下降,也应该往下执行。
性能优化属于另外一个关注点,等重构完成后,项目设计良好,此时再去做性能优化也更容易。
若仅凭感觉来决定说为了提高性能而放弃重构代码,这是一个错误的想法。
正确的做法是:
首先写出可运行的软件,然后调整它以求获得更快的速度。
如果当你在开发的过程中时刻追求软件的性能,首先会导致开发难度增加、开发时间变长。同时大多数情况下来分析,你会发现你花费的大部分时间都是在调整一些小部分的代码上以追求性能的增加,实际上这小部分代码最终被执行的概率没有你想象中的那么频繁。这意味着你大部分时间做的是无用功。
你所做的性能优化是你臆想出来的。
只有当你做出可运行的项目,并且对整个项目结构了解清楚之后,知道性能瓶颈在哪,有针对性的进行优化,通常会有意想不到的收获。
何时重构:
重构可以随时进行,不一定要专门腾出时间来进行重构。(当然,你也可以这么做,前提是团队的意见是一致,并征得老板同意,说服老板重构能够改良设计不仅代码质量提高同时加快开发速度。)
但注意一定要将重构和添加功能的两种状态进行划分,在重构的时候不要添加功能。否则你不知道BUG是重构时导致还是添加功能时导致,增加重构的难度。
这两种状态可以来回切换,但不能重叠。
何时不该重构:
项目已近最后期限,因为已经没有足够的时间重构
项目设计&重构&性能优化的更多相关文章
- 漫谈项目设计&重构&性能优化
重构的好处:重构能够改进软件设计,随着项目需求的变更,项目体积的变大早已与最初的设计大相径庭,代码结构变得凌乱.复杂,如果不进行重构,则很难添加新的功能. 1.使项目代码更容易理解很多情况下是由于项目 ...
- 一个Web报表项目的性能分析和优化实践(五):重构有助于性能优化么?
项目从初次开发到现在,已经快3年了.期间,有N个工程师参与过. 需求方面:增加减少,反反复复,无数次:人力方面:增加减少,不稳定:时间方面:功能开发着急上线,Bug开发紧急修复. 因此,代码臃肿,问题 ...
- 【腾讯Bugly干货分享】跨平台 ListView 性能优化
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/FbiSLPxFdGqJ00WgpJ94yw 导语 精 ...
- Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- (转) Android开发性能优化简介
作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...
- T- SQL性能优化详解
摘自:http://www.cnblogs.com/Shaina/archive/2012/04/22/2464576.html 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册 ...
- 【腾讯Bugly干货分享】微信读书iOS性能优化
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578c93ca9644bd524bfcabe8 “8小时内拼工作,8小时外拼成长 ...
- Java的性能优化
http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app ...
- 那些Android中的性能优化
性能优化是一个大的范畴,如果有人问你在Android中如何做性能优化的,也许都不知道从哪开始说起. 首先要明白的是,为什么我们的App需要优化,最显而易见的时刻:用户say,什么狗屎,刷这么久都没反应 ...
随机推荐
- HBase协处理器
说明:类似于RDBMS中触发器,允许用户在region服务器上运行自己的代码,在客户端用户不用关心操作具体在哪进行 使用场景:权限控制,回调函数(钩子函数).扫描统计等 主要类:observer和en ...
- css+div 布局遇到的小常识
/根目录../上层目录举例如下: 在photo.css文件中写入: div.ls{ background:url(../photo/framels.jpg) no-repeat left; }div. ...
- Do's and Don'ts for Android development
Do's and Don'ts for Android development, by Futurice developers Use Gradle and its recommended proje ...
- 首届京东自有品牌科技周“京东点亮生活”圆满成功 - 课程公告板 - 京东内部论坛 - Powered by Discuz!
首届京东自有品牌科技周"京东点亮生活"圆满成功 - 课程公告板 - 京东内部论坛 - Powered by Discuz! 首届京东自有品牌科技周"京东点亮生活" ...
- escape encodeURI encodeURIComponent区别
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串.使用unescape来解码. 有效的URI(统一资源标示符)是不能包含某些字符的,如空格,所以需要进行编码,编码方法有 ...
- 指针-->字符串
1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符. 如在代码中写"abc",那么编译器帮你存储的是"abc\0". 2. "ab ...
- juce: 跨平台的C++用户界面库
如果你用过QT和MFC,那你必然知道QT是基于C++的跨平台库,而MFC是微软针对widows平台推出来基础类库.且不论MFC的设计如何,从我个人和身边朋友的经历来看,MFC是一些非常难以理解的类的组 ...
- 使用 Spring 2.5 基于注解驱动的 Spring MVC--转
概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 ...
- Svg操作
SVG文件的JavaScript操作 获取SVG DOM 如果使用img标签插入SVG文件,则无法获取SVG DOM.使用object.iframe.embed标签,可以获取SVG DOM. var ...
- Git系列(1) Windows下Git服务器搭建
作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 我们这里只需要两个软件git和ssh, ...