`
zhouxwyeah
  • 浏览: 20943 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

程序员需要知道的97件事情 --- 写在重构代码之前

阅读更多
   本人英语抄过4级,奇烂无比,翻译这个实属蛋疼,错误是肯定有的,而且是翻不出来就是随便猜,欢迎指正,谢谢啦。但愿我能够翻完我看的懂的....
    原链接:oreilly的程序员需要知道的97件事http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book

   在项目的某些阶段,程序员们都可能需要去重构现有的代码。请您在重构之前,思考以下的一些问题,也许能够帮您节省一大堆时间和痛苦。
1. 重构的最佳开始途径是在开始阶段观察现有的代码和对应的单元测试代码(就是要先读一遍代码)。这将会让更好你理解现有代码的健壮和孱弱之处。你就能够让你在避免错误的情况下保留健壮的代码。(这个其实我不大理解,可能我项目中代码中的测试案例太少,导致测试代码无法当做参考)我们大多数都和你自信能够做的比现有系统好,直到我们写出那些并不高明的代码….或者更糟,比现有系统拥有更多的错误,因为我们没法从原来的错误中吸取经验。
2. 远离重写一遍的诱惑。我们大多数浮躁的程序员,总以为以前的代码太烂,恨不得自己重写一遍。在重构的时期,最佳实践就是尽量重用以前的代码。无论原先代码多么的难看,它都是被测试过的,被检查过的,是正确的.抛弃原先的代码,特别是生产的代码,意味这你抛弃了数月或者数年的测试,这些根深蒂固的代码可能有那些你所不知道的确切工作区域和BUG修复,如果你没有给予足够的重视,你的新写代码可能会犯原来老代码早已经修改过的BUG,这样做是完全浪费时间,效率,以及数年来积累的经验。
3. 大量的小范围重构比一大块的重构效果好。一个个小块的重构让你更加容易控制重构对于系统带来的影响,也更加容易从用户的反馈上来了解重构带来的效果,例如测试。如果做一个改变,而带来一大堆需要测试的点,这样是谁也不希望看到的。不恰当的重构会带来挫折感和压力。合理重构带来一部分方便测试的任务,可以很方便管理。
每次重构之后,必须去确认能够通过所有已经存在的测试用例。如果已有的测试用例无法完全覆盖你的代码,去新增测试用例。不要忽视原有代码的测试,因为你永远无法确认你的重构是否影响了他们。
4.   不要无缘无故的去修改前人的代码。认为自己一定比前人更加聪明,这也是一个人让人发笑的理由。

5.   新技术不是重构的理由,现有代码使用的技术落后于如今的技术酷,或者新潮,这是我看到的最不靠谱的理由。我们相信新的框架或者语言能够有更好的生产力,除非有一个权威的分析指出,新的框架或者语言能够给我的现有系统在功能上,可维护上,生存率上带来全面的提高,我才能够由此去做重构。

6.    永远要记住,是人都会犯错误。重构过程中并不能保证新的代码更加完美,或者和以前一样好。前车之鉴,我见过很多的失败的重构尝试,
分享到:
评论

相关推荐

    学习windows程序设计到color2例子,发现作者写的代码可读性太差,就重新写了个

    在分析和修改原代码时,我们可能需要考虑以下几点: 1. 分析原代码的功能,理解其处理颜色的方式,可能是改变窗口背景色、前景色,或者处理颜色选择对话框。 2. 对关键函数进行重构,确保每个函数都有明确的责任,...

    Writing_Clean_Code.rar_writing clean code

    6. **测试驱动开发(TDD)**:在编写功能代码之前先编写测试用例,可以确保代码从一开始就满足需求,并持续保持正确性。 7. **代码审查**:通过同行评审,可以发现潜在的错误和改进点。这也有助于传播最佳实践,...

    (项目经理必看)解析极限编程-拥抱变化.rar

    3. **测试驱动开发(TDD)**:XP强调在编写任何功能代码之前先编写测试用例。这样可以确保代码质量,减少bug,同时也有助于快速验证功能是否符合需求。 4. **重构**:随着代码库的增长,重构是保持代码清晰和可维护...

    微软C#教程.txt

    - 支持现代软件工程的最佳实践,如单元测试、代码重构等。 - **1.4 小结** - 本章概述了.NET平台的概念及其与C#语言的关系,强调了C#作为一种现代化的编程语言在.NET框架中的核心地位。 ##### 第二章 运行环境 ...

    50条C++学习建议

    - **解释**:设计一个Class并不是一件容易的事情。 - **建议**:通过不断的实践和完善来提高设计水平。 #### 44. 遵守规则 - **解释**:即使项目很小,也要遵循良好的编程习惯。 - **建议**:养成良好的编程习惯,...

    软件测试十大原则.docx

    - 对这些区域进行代码审查和重构,提高代码质量。 - 针对性地增加测试用例,尤其是针对异常情况和边缘条件的测试。 综上所述,软件测试的十大原则涵盖了测试工作的各个方面,从需求理解到测试执行再到结果分析,每...

    模块一unit2全单元短语与句型.doc

    15) **混乱 ( in) a mess**:描述杂乱无章的代码或项目管理状态,需要进行重构或整理。 16) **让…..负责 (leave sb in charge)**:在团队协作中,可能会指定某人负责特定任务或项目。 17) **表现得像/担当 (act ...

    二十三种设计模式【PDF版】

    一个设计在最终完成之前常要被复用好几次,而且每一次都有所修改。 有经验的面向对象设计者的确能做出良好的设计,而新手则面对众多选择无从下手,总是求助于以前使用过的非面向对象 技术。新手需要花费较长时间...

    springCloud

    微服务架构有很多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。 需要避免为了“微服务”而“微服务”。 微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已...

Global site tag (gtag.js) - Google Analytics