项目设计&重构&性能优化
漫谈项目设计&重构&性能优化
重构的好处:
重构能够改进软件设计,随着项目需求的变更,项目体积的变大早已与最初的设计大相径庭,代码结构变得凌乱、复杂,如果不进行重构,则很难添加新的功能。
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,什么狗屎,刷这么久都没反应 ...
 
随机推荐
- Delphi7  THTTPRIO 控件设置超时
			
HTTPRIOLeExp.HTTPWebNode.SendTimeout := 100000; //发射 HTTPRIOLeExp.HTTPWebNode.ConnectTimeout := 10 ...
 - Number Transformation
			
Description In this problem, you are given a pair of integers A and B. You can transform any integer ...
 - SCGHR 系统设计
			
1.表,弄清表的意义,表是系统的核心.
 - Facade外观模式 笔记
			
Facede模式: 把内部系统复杂隐藏,提供一个方便统一的接口. 微波炉在界面简单操作下就可以烹饪出美味佳肴, 微波炉内部运作原理,各个组件互相交互运作,使用者并不需要关心. 而且关心的话可能没有多 ...
 - web端及时通讯原理
			
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
 - Android Framework 记录之二
			
接着上次的记录,续写. 23.services文件夹 文件 描写叙述 class AlarmManagerService extends IAlarmManager.Stub { //定时管理服务 p ...
 - Robotium -- AndroidUI优化工具HierarchyViewer
			
为什么使用HierarchyViewer 不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计.H ...
 - C++虚函数及虚函数表解析
			
一.背景知识(一些基本概念) 虚函数(Virtual Function):在基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数.纯虚函数(Pure Virtual Functio ...
 - Chrome调试大全--转载
			
作为一名前端开发者,打交道最多的可能是和浏览器.市面上各种浏览器多不胜数,主流的有Chrome,Firefox,Safari,IE,Opera,非主流的如360,遨游,QQ浏览器,搜狗浏览器,据说淘宝 ...
 - 【Android】无限滚动的HorizontalScrollView
			
这是一个很简单的功能,作为新手,做一下笔记.也给其它有需要的人提供一个参考. 首先HorizontalScrollView都知道用途了.它可以实现类似“桌面程序”左右切换页的效果.一般情况下里面的页数 ...