生命不息,重构不止

2024-06-10 13:08
文章标签 重构 不止 生命不息

本文主要是介绍生命不息,重构不止,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

重构

在这里插入图片描述
所谓重构(refactoring)是这样一个过程:
在不改变代码外在行为的前提下,对代码做出修改,已改进程序的内部结构。使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

在工作之中,和其他同行聊起几年前以前共同开发的项目,聊到了现在发现的原有框架上的一些问题,并探讨更好的解决方案。
在他的推荐下,我入了《重构 改善既有代码的设计 第2版》一书。
好记性不如烂笔头。
我在此记录一下阅读此书的笔记。

他们的看法

以下是行业内的人阅读此书的一些看法摘抄:

  • 对于软件工程师来说,重构,并不是额外的工作,它就是编码本身。——乔梁,腾讯高级管理顾问

  • 应该去追求编写人能读懂的而不是仅机器能读懂的代码。——阎华,京东7FRESH架构师

  • 软件不死,重构不歇。——余晟,《代码简洁之道:程序员的职业素养》译者

  • 持续优化已有代码是维护系统生命力的最好方法。——杨卫华,微博研发副总经理

  • 深入地理解架构、理解业务、理解需求,减少因设计失误而导致徒劳无益的反复重构。——庄表伟,开源社区理事

重构心法

王建(译者同事)的十六字重构心法:
旧的不变,
新的创建,
一步切换,
旧的再见。

重构第一示例

将一个业务复杂的单方法拆分成多个方法。
已达到主方法功能可读易理解的效果。
有一点向为一篇很长的文章整理段落,提炼标题;使比人能够很容易的了解文章大体内容。

第一示例用到了以下重构方法:

  • 提炼函数(把一块代码单独提取成一个函数)
  • 查询取代临时变量(函数参数:把能从现有参数中得到的变量取消掉)
  • 内联变量(函数内部:取消临时变量)
  • 改变函数声明(修改函数名称,使之能清晰的描述其作用)
  • 移动语句(函数内部:将变量声明移动到紧邻循环的位置)
  • 拆分循环(将同一函数下的多个逻辑单独创建循环)

关于程序性能

先做重构,再做性能优化。
在此过程中牺牲了部分程序性能,但是对引用的影响微乎其微的。
对性能有较大影响时也不要慌,先重构是为了后面的更好的调优。

重构的好习惯

  • 重构前,先准备一套可靠的测试集,这些测试必须有自我检验能力。
  • 小步伐修改程序,以便出错时发现问题,不能急于求成。这一点对于已上线应用的系统尤为重要。
  • 把代码推送(push)到远端仓库前,把零碎的修改压缩成一个更有意义的提交(commit).

编码风格

变量改名

  • 永远将函数的返回值命名为“result”。

金额计算

  • 将货币以分为单位存储,可以避免使用浮点数又不影响数学操作。

这篇关于生命不息,重构不止的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048250

相关文章

Mybatis Plus快速重构真批量sql入库操作

Mybatis快速重构真批量sql入库操作 基本思路 重构mybatis默认方法saveBatch和saveOrUpdateBatch的实现 基本步骤 真批量保存实现类InsertBatchMethod真批量更新实现类MysqlInsertOrUpdateBath注册InsertBatchMethod和MysqlInsertOrUpdateBath到EasySqlInjector注册Eas

[机缘参悟-222] - 系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进(软件系统、思维方式、亲密关系、企业系统、商业价值链、中国社会、全球)

目录 前言:系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进 一、软件系统的重构 1、重构的定义与目的 2、重构的时机与方法 3、重构的注意事项 4、重构的案例分析 二、大脑思维的重构 1、大脑思维重构的定义 2、大脑思维重构的方法 3、大脑思维重构的挑战与前景 三、认知的重构 1、定义 2、目的 3、方法 四、实例 五、总结 四、婚姻家庭的重构 1、婚

总结如何成为“好”代码——读《重构:改善既有代码的设计》有感

读后感 说是“读后感”,其实并不是看得很仔细,尤其是各种代码例子,我基本上是跳过的。个人觉得,重构这件事上,关键是要能嗅出坏代码,知道什么是好代码,这样目标明确后,重构的手段其实是水到渠成的,唯一要注意的就是书中强调的:要以小步为单位稳打稳扎进行。 我所理解的“好”代码 核心目标 那么如何才是“好”代码?书中的答案是:“人们是否能轻而易举地修改”,而我觉得抽象层级更高的描述是:易于未来的工

远程控制不止向日葵,这四款工具千万别错过!

不管是什么职业,总有些朋友会需要远程控制电脑,无论是从家里连接到办公室的机器,还是在出差时需要紧急访问我的开发环境。今天,我想和大家分享一下我使用过的几款远程控制软件它们在实际使用中的表现如何。 一、向日葵 网址:https://down.oray.com 向日葵是一款老牌的远程控制软件,它的界面设计得非常简洁,上手容易。 我最喜欢的是它的跨平台特性,无论是在Windows、macOS还是

数据结构 - 二叉树(重构 + 遍历)

写在前面 昨天有同学问到我一题关于重构二叉树的问题(link),做了一下,也做个记录吧! 所谓二叉树的重构,就是给你前序和中序,或者中序和后序,让你还原这棵二叉树. 注意:给出前序和后序是不能唯一确定一棵二叉树的,证明请看这儿.   一.给出前序和中序,重构二叉树 一个递归的过程: 当前结点的value:每一轮根据前序的第一个元素确定当前结点值. 左子树的中序遍历

来自Uber的12条架构重构经验

来自Uber的12条架构重构经验 2016-02-04  来源:聊聊架构 分类:架构  阅读(56) 评论(0)  对于开发者来说,架构设计是软件研发过程中最重要的一环,所谓没有图纸,就建不了房子。在遍地App的互联网时代,架构设计有了一些比较成熟的模式,开发者和架构师也可以经常借鉴。 但是,随着应用的不断发展,最初的架构往往面临着各种问题,比如无法满足客户的需求、无法实现应用的扩

重构手法之重新组织函数

重构手法之重新组织函数 在重构的手法中,很大的一部分是对函数进行整理,使函数能够恰当地包装代码(让代码自己说话而不是写更多的注释)。重新组织函数的驱动力,往往都是由于函数过长。因为函数过长就以为着包含了更多属性和逻辑,这样复杂的逻辑和诸多属性(如函数内部的局部变量或者静态变量等)会让代码变得难以维护,需要对其进行重新组织。 提炼函数 在冗长的函数中提炼出精小的函数,让每个短小函数负责的

央视曝光“硫超标”枸杞,记者直击加工现场:被熏到泪流不止

枸杞,这一自古以来便被誉为“药食同源”的珍贵食材,不仅承载着中华民族深厚的养生智慧,也广泛融入现代人的日常饮食与保健之中。 从食品、饮料到保健品,枸杞的身影无处不在,其独特的营养价值与药用价值深受消费者青睐。 然而,在这看似颗粒饱满、鲜艳红亮的枸杞,背后却隐藏着不为人知的秘密,有着巨大的食品安全隐患,威胁着消费者的健康,更对中医这一中华文化的瑰宝造成了不可估量的损害。 青海省海西

LeetCode 重构二叉搜索数,即找出两个被交换的节点

原题:Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its structure. Note: A solution using O(n) space is pretty straight forward. Could you de