Refactory, 敏捷4个个人实践之一。
推荐一本书,重构-改善既有代码设计,非常好的一本介绍重构的书籍。
其实对于软件来说,我们面对两种情况,一种是我们新增加或者修改的代码,一种是系统遗留的代码。
参加过一个培训,这个培训说,以前的代码很烂,那是以前的人留下的,可是我们现在在做什么呢,我们现在也许在为以后留下烂代码。
所以我们需要重构,何时重构?
如果团队推广TDD的时候,那么每一个测试用例通过的时候,都需要在看看代码,是不是有坏味道,有的话,需要消除掉。
如果没有的话,那么我们需要时刻注意,当你准备复制粘贴的时候,那么你需要考虑下是不是需要重构了。
使用工具,FindBugs是个不错的选择。
那一次培训还接触到了一个新的东西,圈复杂度,至于怎么计算,网上有说,我们应该能够容忍我们的圈复杂度在10以下。
对于系统遗留的代码又如何呢?
三次原则,如果我们在老代码的三个地方看到同样的代码,那么我们就需要对其进行重构。因为三次看到一段代码,表明它在系统的活跃度很高,需要抽取。
至于如何写出好的代码,没有臭味道的代码,很难,很难,我们认为的好代码,其实就是我们看的最多,看的习惯的。
还有一本书也不错,简洁代码之道,这本书上重很多角度提出了我们应该怎么写出简洁的代码。
在组内,我们为每一个用户故事,都给出了4-8个小时的重构时间,让大家回归一下,我们的代码是不是有坏味道,足够的测试能够保证,我们在重构时候不会伤害软件的功能。
分享到:
相关推荐
配电网重构是一个多目标、多时段、多组合、多约束的非线性优化问题。该问题的复杂性,决定了难以用单纯的数学方法得到满意的解。尝试用改进的遗传算法进行配电网络重构,建立评价函数,寻求该评价函数最优解
vim-coffeescript-重构在vim中为Coffeescript重构工具! 同样的感觉有感谢你可以帮忙新想法,错误...请打开问题。 你有一些规范或例子,请 forkit 并将它们添加到测试中并提出拉取请求:) 您知道 vimscript 请提出一...
fizzbuzzrefactor 嗡嗡声重构当页面加载时,应该提示用户提供一个数字。 最简单的方法是使用 prompt() 函数,但您也应该随意创建一个简单的文本输入,其中包含告诉用户输入数字的文本。 您需要编写一个命名...
机器视觉算法与应用一书中的三维平面重构工程实例的代码及素材。
随着时间的推移,我尝试将运行时断言添加到代码中,以便在重构区域周围进行额外的测试。 尽管这些断言有助于验证工具应用的重构的有效性,但测试用例的通过与否取决于调用重构工具并检查差异的人员。 通常,在评估...
重构是对软件内部结构的一种调整,目的是在不改变软件之可察性前提下,提高其可理解性,降低其修改成本。关于重构的至理明言如下:任何一... 当你感觉需要撰写注释,请先尝试重构,试着让所有的注释变得多余; 当你
在属性文件中指定与标识相关的 API 列表之后,该工具会输入标识名称和预期处理行为,并根据这些来自动重构代码。 特性标识(feature flags)通常用于启用逐步推出或尝试新功能。在某些情况下,即使在达到标识目的...
本文用eclipse的自动重构功能对一个程序实例进行重构,目的是探索Eclipse自动重构可以在多大程度上辅助重构这个过程。程序实例使用《Refactoring:Improving the Design of Existing Code》一书中的例子。 Eclipse的...
Android备忘录 尝试重构。 来源: :
尝试重构此方法。 整个练习包含一个功能(Program类中的静态方法Play)。 它具有大约1,000行代码,并按照以下步骤实现了整个Sudoku游戏: 构造一个完全解决的数独板-此步骤确保有解决方案从电路板上删除一定数量的...
重构以更好地分离关注点 返回 WAV 和 MP3 修复了通过以死空气结尾MP3 输出长度加倍的问题 在用户点击记录之前不再要求麦克风访问 显示保存到 Firebase 的示例 ##去做 录制时添加可视化工具 仅当 cfg.debug = ...
:我们发布了此存储库的,并鼓励您尝试一下! 2018.07.20 :将后期postprocess分散到组成管道的不同步骤中,将模型更改为float以节省空间。 设置和用法 该项目已在具有Matlab R2015b的Ubuntu 14.04 LTS上进行了测试...
每次重构尝试都需要您编写测试。 在他前面! 每次重构都会导致应用程序工作方式中的意外更改。 适当计划的测试可以防止更改后的倒退或操作失败。练习题任务01任务02 修改PowiadomienieORozprawieServ
在属性文件中指定与标识相关的 API 列表之后,该工具会输入标识名称和预期处理行为,并根据这些来自动重构代码。特性标识(feature flags)通常用于启用逐步推出或尝试新功能。在某些情况下,即使在达到标识目的之后...
于是尝试YALMIP跟Gurobi直接编程相结合。 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息...
英语翻新指南 前言 该文档之所以出现在GitHub上,而... 为了理解重构的概念,首先,让我们尝试了解什么是纯净的简单代码,阻止纯净代码并导致其编写不良代码的原因是什么,换句话说,什么是技术债务,什么是技术债务
尝试使此练习保持在3小时以下。 如果您在3个小时后仍然有需要改善的地方,请写下来,我们会予以考虑。 局限性 LegacyApp.Consumer中的Program.cs类根本不会改变。 这包括using语句。 假定此代码库是更大系统的一...
使用助手重构视图 目标 了解如何以及何时使用辅助方法 为特定控制器创建辅助方法 创建应用程序范围内的助手 故事strftime 假设我们正在开发博客应用程序。 实际上,我们甚至不必想象,因为本课程中包含一个博客应用...
RSClassic-202重构客户端 尝试给出理智的名称并将理智的流程返回给RSClassic 202 deob 基于我的工作,我和马克·戈尔一起开始了工作。 此时,IDK是谁对RSC-202进行了添加或更改的内容,所以不要问。 我将继续改进它...