Refactory, 敏捷4个个人实践之一。
推荐一本书,重构-改善既有代码设计,非常好的一本介绍重构的书籍。
其实对于软件来说,我们面对两种情况,一种是我们新增加或者修改的代码,一种是系统遗留的代码。
参加过一个培训,这个培训说,以前的代码很烂,那是以前的人留下的,可是我们现在在做什么呢,我们现在也许在为以后留下烂代码。
所以我们需要重构,何时重构?
如果团队推广TDD的时候,那么每一个测试用例通过的时候,都需要在看看代码,是不是有坏味道,有的话,需要消除掉。
如果没有的话,那么我们需要时刻注意,当你准备复制粘贴的时候,那么你需要考虑下是不是需要重构了。
使用工具,FindBugs是个不错的选择。
那一次培训还接触到了一个新的东西,圈复杂度,至于怎么计算,网上有说,我们应该能够容忍我们的圈复杂度在10以下。
对于系统遗留的代码又如何呢?
三次原则,如果我们在老代码的三个地方看到同样的代码,那么我们就需要对其进行重构。因为三次看到一段代码,表明它在系统的活跃度很高,需要抽取。
至于如何写出好的代码,没有臭味道的代码,很难,很难,我们认为的好代码,其实就是我们看的最多,看的习惯的。
还有一本书也不错,简洁代码之道,这本书上重很多角度提出了我们应该怎么写出简洁的代码。
在组内,我们为每一个用户故事,都给出了4-8个小时的重构时间,让大家回归一下,我们的代码是不是有坏味道,足够的测试能够保证,我们在重构时候不会伤害软件的功能。
分享到:
相关推荐
- 如果某次重构尝试失败,应迅速回滚,避免引入新的问题。 - 在进行大规模重构之前,确保有足够的测试覆盖率,以验证重构的效果。 ### 结论 重构是一项既艺术又科学的活动,它需要开发者具备深厚的技术功底和敏锐...
重构是指在不改变软件外部行为的前提下,对软件内部结构进行调整,以提高其可读性、可维护性和可扩展性。这种做法有助于开发者更好地理解和修改现有代码,从而提高软件产品的质量。 #### 2. 重构的必要性 随着项目...
书中深入探讨了重构技术,旨在帮助开发者在不改变代码功能的前提下,优化和改进现有代码的设计与结构,从而提升代码的可读性、可维护性和可扩展性。以下是对书中提及的部分关键重构技巧的详细解读: ### 1. 添加...
### 重构——改善既有代码的设计 #### 知识点概览 重构是一种系统化的方法,旨在改进现有软件的内部结构而不改变...需要注意的是,重构并不是一次性的活动,而是一个持续的过程,需要在项目的整个生命周期中不断进行。
- **解决方法**:可以尝试减少参数的数量,比如通过将参数组合成一个对象(Introduce Parameter Object),或者将某些参数替换为方法调用(Replace Parameter with Method)等方式。 6. **发散式变化 (Divergent ...
在机器视觉领域,Halcon是一种广泛应用的图像处理软件,它提供了强大的算法库,支持各种复杂的图像分析任务,包括我们今天要讨论的三维平面重构。基于立体视觉的三维重构是计算机视觉中的一个重要课题,它涉及到从两...
在实际学习过程中,我们可以打开这些文件,逐一分析其中的Java代码,尝试找出可以重构的地方,然后按照重构原则进行改造,以提高代码质量。 总的来说,通过结合理论学习和实际操作,开发者可以更深入地理解重构的...
在C#编程中,窗体重构是一个常见的任务,它涉及到改变窗体的外观和行为以满足特定需求。本文主要探讨如何实现自定义窗体的皮肤重构,...在实践中,不断尝试和优化,你将能够熟练掌握这一技术,为你的应用程序增添亮点。
在深入探讨具体的重构技巧之前,我们先来了解几个重构的基本原则: 1. **确保测试覆盖**:重构前确保有完整的单元测试覆盖是非常重要的。这样可以保证在重构过程中及时发现引入的新bug。 2. **小步快走**:每次只...
首先,我们来理解一下什么是代码重构。代码重构是不改变代码外在行为的前提下,对代码结构进行改进的过程,旨在提高代码的可读性和可维护性。Piranha通过识别代码中的过时模式,如废弃的API调用、不再推荐的语法结构...
在本教程中,我们将尝试应用 MVC 模式来重构 Bmi.java 这个简单的 BMI 计算程序。原程序的 `onCreate` 方法包含了许多处理用户界面元素的代码,这使得方法过于臃肿,不利于后期的维护和扩展。下面我们将逐步分析并...
修复机制分为重构和修复两步,前者尝试保持原始几何形状,后者可能需要删除部分表面并填充孔洞。系统还提供选项来自动删除小的、断开的零部件,以优化最终网格结构。自动修复的触发条件可以基于穿孔面、表面接近值和...
为了提高代码的可维护性,我们可以采取以下步骤进行重构: 1. **识别并提炼重复代码**:首先,识别出所有重复的代码片段,然后将其提炼成独立的方法或类。 2. **优化类结构**:检查每个类的职责是否过于繁重,如果...
1. **回溯线性搜索**:这是一种用于确定步长的方法,它在每一步中都尝试缩小或扩大步长,直到满足某种条件为止。这种方法在Stephen Boyd的《Convex Optimization》一书中有所介绍。 - **目的**:确保每一步的移动...
根据提供的信息,我们可以推断这份文档主要关注的是“重构速成”的相关内容。下面将围绕这一主题展开详细讨论,包括重构的基本概念、为何进行重构、重构的常见策略与技巧,以及如何在实践中快速提升重构能力。 ### ...