数据库重构-车型库 数据
2.1 什么是重构
**重构:**一种对软件内部结构的调整,目的是在不改变软件可观察行为的情况下,提高其可理解性,降低其修改成本。
** 区别: ** 性能优化。 性能优化通常会使代码更难理解,但必须这样做才能达到预期的性能要求。
2.2 为什么重构 2.2.1 重构改进软件设计
重构的本质是组织代码。 一个重要的作用就是消除重复代码,从而保证所有的事物和行为在代码中只表达一次(良好设计的基础)。
2.2.2 重构让软件更容易理解
当你只想让程序尽快运行和交付时,你不会考虑未来维护者面临的工作。 而重构可以让我们更容易阅读和理解代码,让代码更好地表达自己。 这种编程模型的核心是准确地说出我想要什么。
随着代码越来越干净整洁,你会在设计层面发现以前看不到的东西,重构让我的认识更上一层楼。
2.2.3 重构有助于发现bug
如果你重构代码,你可以深入理解代码的行为,从而获得新的认识,更好地理解程序结构,理解你所做的一些假设。 这时候就比较容易发现bug了。
2.2.4 重构提高编程速度
好的设计是快速开发的基础,它可以防止系统崩溃。 没有好的设计,你的进步可能会很快,但糟糕的设计会很快减慢你的速度。
2.3 何时重构 2.3.1 三次法则
只有三个东西,第三个是重构。
2.3.2 添加特性时重构
在为软件添加新功能时进行重构,理清代码结构,从中理解更多,可以帮助我更轻松地添加自己需要的功能。 在某些情况下,引入某种架构重构后数据库重构,添加功能会变得更加容易。
重构完成后,添加新功能会更快、更顺畅。
2.3.3 修复bug时重构
如果您收到错误报告,那就是重构的信号,因为显然代码不够清晰——不够清晰,您一眼就能看出错误。
2.3.4 Review代码时重构
对于比较大的设计评审工作,在评审代码的时候,可以通过UML图展示设计,用CRC卡展示软件图。 相反,与单个审阅者一起进行代码审阅。
重构达到的目标:①通俗易懂; ② 所有的逻辑只在一个地方指定; ③ 新变化不会危及现有行为; ④尽可能简单地表达条件逻辑。
2.4 对经理说的话
面对进步驱动的管理者,建议不要跟管理者说重构,而是根据自己的判断来决定是否需要重构。 假设您认为重构是在修复错误或开发新功能之前理解软件的最快方式,那么就进行重构工作。
间接层和重构
——肯特·贝克
计算机科学是一门相信所有问题都可以通过添加一个间接层来解决的科学。 ——丹尼斯·德布鲁勒
重构往往将大对象拆分成多个小对象数据库重构,将大函数拆分成多个小函数。
间接层是一把双刃剑。 每当一个东西被分成两部分时,就需要多维护一个东西。 以下是间接层的值:
如何在保持现有行为的同时提高系统质量或降低成本以使其更有价值?
您可以找到一个缺少间接层的好处的地方,并在不修改现有行为的情况下向其添加一个间接层。 反之,也可以把不值得的间接层找出来去掉。
通过重构,程序始终保持一致的行为,并且您有计划为程序添加更多有价值的品质。 而“精心预设计”试图在代码诞生之前就让系统具备所有的优秀品质,然后架构骨架来添加代码,但太容易猜错了。
2.5 重构难点 2.5.1 数据库
数据库结构变化引起的数据迁移是一个漫长而繁琐的过程,尤其是在业务复杂的情况下。
数据库分离层通过持久层移动来隔离对象模型和数据模型之间的各自变化。
相关内容:《数据库重构》
2.5.2 修改界面
如果重构技术更改了已发布的接口,请让旧接口调用新接口。
不要过早地发布接口。 请修改您的代码所有权政策以使重构更顺利。
对于异常,可以为整个包定义一个异常基类,所有接口都会抛出这个异常,避免抛出各种异常污染接口。
2.5.3 重构难以完成的设计变更
我们很难将一个没有考虑安全需求而构建的系统重构为一个安全性好的系统。
如果您没有看到提前重构的简单方法,请在设计上投入更多。 然而,后者很难预测未来真正需要的设计目标。
相关案例:
不支持多卡支付的系统增加多卡支付功能,需要修改整个数据库相关表
最初,该系统仅供一种业务使用。 需要介入其他业务线的需求,需要支持appid分发。 这种重建也是一项非常大的工作。
2.5.4 何时不重构
在重构之前,代码必须至少在大多数情况下都能正常工作。 如果不能,请考虑重写。 折衷方案是将“大型软件”重构为封装良好的小型组件。
如果项目接近截止日期,则应避免重构。 如果您没有足够的时间进行重构,通常表明您已经逾期了。
2.6 重构与设计
重构和设计是相辅相成的。 设计就像画工程图,编码就像施工。
尽管重构了,你还是要做前期设计,找到一个非常不可接受的解决方案,然后才开始编码,然后你才能重构。 有了重构,即使前期设计找不到正确的解决方案也不是问题,而且重构让以后的修改成本更低。
2.7 重构与性能
虽然重构可能会使软件运行速度变慢,但它也使软件更容易优化性能。
除了对性能有严格要求的实验系统外,编写高性能软件的秘诀是:首先编写易于维护的软件,然后对其进行调优以获得足够的速度。
从短期来看,重构可能确实会让软件变慢,但它让优化阶段的软件性能调整变得更容易,最终会带来好的结果。
2.8 重构起源于何处