代码整洁之道重点选摘,代码整洁之道豆瓣

代码整洁之道重点选摘,代码整洁之道豆瓣,代码整洁之道(重构)

本文主要介绍代码整洁的方式(重构)。无论什么语言,重构都是软件开发过程中不可或缺的一部分,具有一定的参考价值。感兴趣的朋友可以参考一下。

前言

之前也介绍过,我们团队的前端项目从无到有经历了8个月10万行的迭代业务代码(只有产品长期规划需求的20%),目前还在迭代过程中。

除了设计一个好的架构来管理这个极其复杂的前端应用,团队成员也开始补充设计模式和重构的知识。目的是在不断迭代的过程中优化项目代码,保持代码的新鲜、健壮和可维护性……让后来加入的新团队成员能够快速加入我们的产品开发。

PS:无论对于任何语言,重构都是软件开发过程中不可或缺的一部分。如果你已经知道了重构的基础,你可以直接跳到文章后面的重构案例部分。

重构背景

“尿布臭了就换”。

随着业务需求的不断增加,随着时间的推移,代码变得越来越糟糕。

这可能包括以下不良嗜好(仅举几例):

的重复代码

函数太长

遵循一个原则:每当你觉得需要注释来解释某件事的时候,你可以试着把它写成一个函数。

裁员

当子类做得不够的时候,或者在可见的预期之内,就不会出现新的情况。考虑内联类。

太长的课

这种情况容易产生冗余代码。比如一个类中有多个前缀或后缀相同的变量,就意味着可以考虑把它们细化成一个组件,或者考虑这个组件能否成为子类,通过细化类来重构。

什么是重构

让我们回头看看“什么是重构”

改进软件的内部结构,而不改变其可观察到的行为。

从而提高可理解性,降低改造成本。

摘自《重构 - 改善既有代码的设计》(以下简称《重构》)

何时重构?

我们需要明确一点:重构不是应该搁置一段时间的事情。重构不是目的,但是重构可以帮助你把事情做好。

然而,有三件事是重建的。

重复性工作,当现有代码不能帮助您轻松添加新功能时

修复bug时很难排除逻辑故障。

代码审查允许其他人审查代码是否可读和可理解。

太多代码没有注释,连自己都无法快速理清代码逻辑。

重构的衡量指标

数量:代码的行数。

质量:代码复杂度、耦合度、可读性、架构依赖复杂度等。

成本:花费的时间。

奖励(成就):支持后续功能快速叠加,解决现有因代码设计问题无法优化的矛盾。

抓重点 抓重点啦

说了这么多废话,其实大家都知道,所有不结合实际的理论都是空洞的。

但重构和设计模式一样,也是一个‘学习三三五四,理解三三五四突破’的过程。学习的第一步让你了解基本的重建技术,实践的第二步唤起你对重建技术的记忆并重温其应用,应用和实践的第三步启发你思考、领悟和总结,从而灵活运用。

但是大家总是在不断的学习和复习,从而达到具体场景的具体应用,灵活机动。

重构是一个大话题。《重构》作者经历过N多个项目,重构的技巧是多年经验总结出来的。

重构技巧

《755-79000》一书作者总结的重构方法太多了。只有图片才能显示所有作者总结的重构列表。

具体补充可以看《重构》这本书。

重构的实践

作者推荐的一种做法:

随机选择一个目标。先给自己选择一个目标(比如“去掉一堆不必要的子类”),然后朝着目标前进,每一步都很小但很坚定。

如果你不确定就停下来。当你无法证明你所做的一切能够保证原程序的逻辑和语义时,请停下来想一想:现有的重构是否得到了改进或者没有结果,需要取消?

确保每个重构的测试都能正常运行。

作为开发者,你应该把重构作为开发的一部分,边开发边重构。在快速堆叠代码,实现基本需求的基础上,编写测试用例,保持功能不变,逐步重构。

这也是为什么我们团队要求每个人都要掌握重构的必备技能。优秀的程序员应该尽量避免低质量的代码。

重建案例

故事场景

顾客可以租借三种类型的电影。

租赁规则

价格计算规则:

普通片——起步价2,超过2天的部分每天每片1.3元。

新片——每天每部3元

儿童片—— 2起,超过3天的部分每天每片0.8元。

积分计算规则:

每部电影加1,新电影加2。

原始代码

密码笔

程序:(请确保重构后结果不变~)

类图

如果有兴趣,可以先看看原代码,考虑原对象关系,再考虑如何重构代码。其实原代码中有很多问题是可以挖掘的。下面是我们的讨论:

划分责任,遵循单一责任原则。

对账单打印账单功能承担了很多功能,包括费用计算、积分计算、结果显示等。

1: 6.1提取方法(提取功能)3354最常用的重建技术

2: 9.1分解条件(分解条件表达式)

用户承担了不属于它的责任,包括收费规则和积分规则。这些职责应该属于电影类型。

明确商业逻辑,比如收费规则,积分规则——看故事场景。

不要直接访问对象的数据。其他对象很容易改变这个对象的数据,但是拥有这个数据的对象对此一无所知。

解决方案:8.10封装字段3354使得数据和行为想要分离。

重构不应该被外界察觉,这样测试用例仍然是可行的。

部分重构

这里为了更好的展示重构的方法,根据上面的讨论,使用TS进行部分重构。重构的方式其实取决于业务未来的拓展方向,没有最优解。有兴趣的可以加入我们,抛出你的看法~

代码打开执行结果:

重构类图关系

基本技巧

采取小步骤并经常测试(确保足够的测试来支持你的重构行为)

使用智能开发工具(如VSCode右键可以对过长的功能代码进行反汇编和功能化)。

推荐书籍

《重构》

《代码整洁之道》

《重构 - 改善既有代码的设计》

《修改代码的艺术》

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

代码整洁之道重点选摘,代码整洁之道豆瓣