您现在的位置:首页 --> 查看专题: 重构
这些年来,随着我们的网站越来越复杂:html5,css3,新的技术、新的属性,越来越多的开发者开始思考和尝试提高他们的 CSS 技能。那么我们从哪里着手呢?对于网页重构工作来说,我们应该养成什么样的开发习惯?一个糟糕的 css 用法是怎样的?我们应该怎么处理这些糟糕的 css。今天这篇文章,我将谈一谈10个我们应该避免的 css 糟糕用法,当然,我们也会分享怎么才是正确的用法。
重构是一种对软件进行修改的行为,但它并不改变软件的功能特征,而是通过让软件程序更清晰,更简洁和更条理来改进软件的质量。代码重构之于软件,相当于结构修改之于散文。每次人们对如何对代码进行重构的讨论就像是讨论如果对一篇文学作品进行修订一样无休无止。
许多人问过我这样的问题,要不要拿出专门的时间做重构。作为一个程序员,重构就应该和写代码、写测试一样,是我们日常工作的一部分,只要你写代码,就应该重构。特别是当你在做TDD的时候,如果你只写测试,编代码通过,对不起,那根本不叫TDD,那叫测试先行。目前为止,我还没有见过一个程序员,包括我自己在内,写代码是一遍就写得非常整洁,无需重构的。通常都是第一遍写出的代码只能实现功能,然后,把它重构得符合整洁的要求。这里要说的重点是,别讨论专门拿时间做重构,那就是你日常工作的一部分。
忍住你的欲望,不要试图重构你不理解的代码。多问问题,努力能清楚他们为什么要把程序写成这样。也许他们有很好的理由。如果你找到一段很古老的代码,很有可能它们是按照古老的方式写的。每天都在新增的API,模式,需求和新领会都会让这些老的方式显得陈旧。不断努力学习新的技术,但不要为了要使用这些技术而过于热心的在重构中使用它们。
最近一直在做性能优化和模块化改造的工作,并完成了一次前端重构。在这里总结出一些经验和得失来帮助大家思考。共两篇文章,第一篇讨论性能优化,第二篇讨论模块化框架。而之所以把这两个话题放到一起,是因为这两项工作都涉及到对前端代码进行不同程度的重构,而且模块化改造其实是我们在对性能优化做到一定程度之后发现必须要做的一件事情。本篇是性能优化的部分,下面我把我们的产品简称为N页面。
什么是遗留代码?没有自动化测试的代码就是遗留代码,不管它是十年前写的,还是昨天写的。关于遗留代码,《修改代码的艺术》迄今为止依然是在具体手法上讲得最好的一本书。不过,这本书上来就直奔代码,还有一些东西是技法之外的。搭建基础设施做软件,没有自动化,基本上都算刀耕火织。关于基础设施,我曾写过一篇很长的文章,以我实际的一个项目为例,介绍了一些设施的基本样子。那篇文章很长,具体到面对遗留代码,有哪些特别之处呢?我们的目标是给没有测试的遗留系统增加代码,那么,那么增加代码覆盖率检查是一个不错的选择,各种语言都有自己的测试覆盖率方案。与单纯使用测试覆盖率不同的是,我们需要保证测试覆盖率只能提升,不能降低。所以,这里可能会略有一些开发的工作量。此外,遗留代码的质量往往不高,除了测试覆盖率工具,我们还可以引入各种代码检查工具,同时,采用同上面类似的做法,保证各种错误只能减少,不能增加。
有时候,会有程序员跑到我这里说他们不喜欢某个东西的设计,“我们需要给它来个全面的重构”,来纠正里面的错误。哦,哦。这听起来可不是个好主意。而且这听起来也不是重构… 重构(Refactoring)这个词最初由Martin Fowler 和 Kent Beck给下的定义,它是 一种修改,使软件的内部结构更容易理解,在不改变软件的可见行为方式前提下使软件更容易变更…它是一种有节制的整理代码、使bug产生几率最小化的方法。 重构的结果是引用了快捷方法、去除了重复代码和死代码,使设计和逻辑更加清晰。是在更好的、更聪明的使用编程语言。是在优势利用你现在知道、但当时的开发程序员并不知道——或并没有加以利用的信息。不断的简化代码,让它们更容易理解。不断的使它们在将来的变更变得更容易、更安全。
昨天,一位老上级邀请我一起吃午餐。当坐在哪里等待上菜时,我们缅怀起早期这个公司的往事。他有一句话让我心里一虚: 啊,你这个判官…我记得当你看到Dan(公司的第一位程序员)写的代码时的样子。你说:“这代码写的真烂,需要重写!” 我恐怕是没有足够的勇气告诉他,我这“代码需要重写”的主张是错误的。不错,我认为这代码写的很乱。但是,据过去历次的经验,我感觉大部分...
今天读到一篇很有意思的文章你永远不应该做的事对于重写,这个词可能是我听到过最多开发以及经理在遇见项目瓶颈时提到的. 当作为旁观者经历过几个项目的起落之后我越来越深刻的感觉到程序员以及经理提到重写是基于以下几个理由 1.对完全理解原有代码的恐惧 2.作为拖延项目完成时间的借口 3.希望表现自己的能力,觉得自己重新写比修复别人的工作更有挑战性与创造性 4.不了解重构而上级能够采纳重写意见一般是基于 1.原有项目时间...
前不久听到这样一个面试的故事:面试官:你准备在我们公司做些什么事情?(大致这个意思)面试人:我准备在公司做网站重构,把原来是table的页面全部重构成css+div的,...面试官:不好意思,我们的网站都是css+div的,不需要重构了。面试人:...(无语了)自从2004年阿捷翻译了《网站重构》这本书,网站重构这个词就慢慢的必成了css+div,甚至等同起来,一些朋友把标准跟重构也混淆了,css+div跟标准也混淆了。这里有很多误读的成份...
摘要: 指针操作错误,string用法不当,逻辑错误等
[ 共11篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [55] 如何拿下简短的域名
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [53] Go Reflect 性能
- [53] Oracle MTS模式下 进程地址与会话信
- [52] android 开发入门
- [50] 图书馆的世界纪录
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [46] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [31] 视觉调整-设计师 vs. 逻辑
赞助商广告