重构心法——提高代码复用率

由于现在的互联网企业业务比较繁忙,导致产品狗不停地提需求,还总是改来改去,最后留给程序猿的时间少之又少。程序猿也不是吃素的,干脆直接copy一下代码随便搞一下实现功能就行,也谈不上所谓的精心设计了。这样的确是缩短了开发的时间,但是到处都是重复代码,大大提高了软件维护的成本,为日后软件的发展带来了隐患。如果同一功能被复制粘贴了上百次,一旦这段代码需要变更时,那简直就是一种灾难,改了这边却忘了改那边。同一段代码,当你Copy第一次的时候也许还能容忍,但是第二次的时候,你应该停下来思考一下了,这是一种优秀的编程习惯,我们要遵守DRY原则。

我们应该多关注那些功能相似或者相近的函数或者类,因为这些地方容易存在大量相同或这相似的代码,它们应当被复用。但由于过去程序结构不合理,与其他程序过于耦合,开发人员意识不够,甚至由于开发时间的限制,它们被简单地Copy了,所以我们应该去重构它们。

  • 当重复代码存在于同一对象中时,也就是说一段代码在该对象中出现了两次以上的时候,我们应该把这段代码抽取为方法。
  • 当重复代码不在同一对象中时,那就运用抽取类的手段将重复的部分抽取到一个工具类中,然后让其他类调用。
  • 当重复代码不在同一对象中时,如果这些重复代码存在着较强的业务相关性,可将这些代码提取并封转成一个实体类,该实体类能够体现这种业务相关性。
  • 当重复代码不在同一对象中时,也可以将相同的部分抽取为父类,不同的部分还留在原来的类中,然后让其他类继承该父类。
  • 当出现继承泛滥时,将不同的部分用一个接口与多个实现来解决,也就是组合。
  • 当重构的代码被相同部分和不同部分分割成了好多碎片的时候,也就是说相同的和不相同的夹杂,而且这个时候多半有顺序,怎么破?很简单了,定义一个父类,分解成数个有顺序的方法(每个方法是一个步骤),代码中相同的部分写在父类中,不同的部分分别在子类中实现各自的步骤。

什么时候该用继承,什么时候该用组合?

  • 如果存在一种IS-A的关系(比如Bee“是一个”Insect),并且一个类需要向另一个类暴露所有的方法接口,那么更应该用继承的机制。
  • 如果存在一种HAS-A的关系(比如Bee“有一个”attack功能),那么更应该运用组合。
时间: 2024-08-12 11:13:08

重构心法——提高代码复用率的相关文章

重构心法——打造高质量代码

个人经历 对我代码质量影响最大的是在一家外资企业,在这家公司我觉得有以下几个方面做的很不错. 团队编码风格统一 统一到什么程度?不看代码作者,你很难区分代码是谁写的(在目前公司一些团队也能达到这个标准) 个人观点: 这样做有什么好处?团队中每个人阅读代码都很容易,减少很多沟通,维护成本( 代码阅读的次数远远大于变更的次数),并且心情非常愉悦.有人肯定觉得愉悦有点夸张,举个栗子:有一些代码,如果不是由于与工作内容有关联,你是否有种这辈子都不情愿去接触它的感受.但也有一些代码,阅读下来一气呵成,心情

提高代码质量:如何编写函数

阅读目录 命名 函数参数 编写函数体 总结 函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的.写好一个函数是提高程序代码质量最关键的一步.本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高.易维护,易测试的函数. 回到顶部 命名 首先从命名说起,命名是提高可读性的第一步.如何为变量和函数命名一直是开发者心中的痛点之一,对于母语非英语的我们来说,更是难上加难.下面我来说说如何为函数命名的一些想法和感受: 采用统一的命名规则 在谈及如何为函数取一

如何提高代码质量

一.代码质量 软件是交付给用户,并由用户体验的产品:代码则是对软件正确且详细的描述,所以代码质量关系到软件产品的质量.虽然软件质量不等于代码质量,但是代码上的缺陷会严重的影响到软件产品的质量.因此,为提高代码质量的投入是值得的. 二.软件产品质量通常可以从以下六个方面去衡量 功能性,即软件是否满足了客户业务要求: 可用性,即衡量用户使用软件需要付出多大的努力: 可靠性,即软件是否能够一直处在一个稳定的状态上满足可用性: 高效性,即衡量软件正常运行需要耗费多少物理资源: 可维护性,即衡量对已经完成

java技巧--提高代码运行效率

java技巧--提高代码运行效率 1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面 第一,控制资源的使用,通过线程同步来控制资源的并发访问 第二,控制实例的产生,以达到节约资源的目的 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信 - 2.尽量避免随意使用静态变量 要知道,当某个对象被定义为stataic变量所引用,那么gc通常是不会回收这个对象所占有的

如何重构"箭头型"代码

本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法.按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得很多东西可以从一个简单的东西出发,到达本质,所以,我觉得有必要在这里写一篇的文章.不一定全对,只希望得到更多的讨论,因为有了更深入的讨论才能进步. 文章有点长,我在文章最后会给出相关的思考和总结陈词,你可以跳到结尾. 所谓箭头型代码,基本上来说就是下面这个图片所示的情况. 那么,这样"箭头型&quo

如何提高代码可读性

一.要提高的代码的可读性,可以从以下几方面努力 1. 清晰地表达意图 2.好的变量.方法.类名 3. 一个变量.类.方法只做一件事 4. 同一个方法体内,保持相同的抽象层次 5.一致的缩进,一致的格式 6. 不要重复自己(避免手动的复制与粘贴代码) 7. 减少“语法噪音” 8.减少代码中的嵌套级别 9. 命名时取有意义的名字,避免不规范的缩写 二.具体的提高代码的可读性的做法 1.先写注释,再写代码:理清思路再动手 (1)清晰的思路是编程行动的良好指南 花点时间思考一下,不要一接到任务就动手编代

提高代码复用

提高代码复用率是程序员永无止境的追求,恐怕面向对象比面向过程的最大的优越之处也就在于此了.除了在程序中设计良好的架构,编写复用性高的类和方法,VS编译器本身也提供了一些可以大大提高编程效率的机制.面向对象是"大智慧"的话,那么巧妙的利用编译器就可以称之为"小聪明"了.编程离不开大智慧,学会耍一些小聪明也是不错的哦.可是最值得深思的是:为什么人家牛老师,会想到这些,而咱们却没有事先发现这些小技巧呢?可见发现的意识.创新的意识真的还差劲啊,但是慢慢来,这里就像人家牛老师

重构糟糕的代码(一)

重构不止是代码整理,它提供了一种高效且受控的代码整理技术. (一)重构原则 1.何谓重构 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本. 另一种解释是:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构. 2.为何重构 改进软件设计:如果没有重构,程序的设计会逐渐变质,重构很像是在整理代码,你所做的就是让所有的东西回到应处的位置上. 帮助找到bug:对代码进行重构,可以深入理解代码的作为,在搞清楚程序结构的同时,想不把bug揪出来都难

[探索]在开发中尽量提高代码的复用性

ctrl+c 和 ctrl+v 给我们带来了很多的便利,但是也使我们变得懒惰,不愿思考. 1.前言 相信很多人和我一样,在开发项目的时候,因为项目赶,或者一时没想到等原因.频繁使用 ctrl+c 和 ctrl+v ,导致代码很多都是重复的.这几天,也看了自己以前写的代码,简单的探索了一下,挑选几个实例,分享下如何在特定场景下,保证代码质量前提下,提高代码复用性. 提高代码的复用性,应该是不同场景,不同解决方案的.同时也要保证代码质量.不建议强制提高代码复用性,如果提高代码复用性会大大的降低代码的