生命不息,重构不止

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

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

重构

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

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

他们的看法

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

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

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

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

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

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

重构心法

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

重构第一示例

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

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

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

关于程序性能

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

重构的好习惯

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

编码风格

变量改名

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

金额计算

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

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



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

相关文章

用react重构个人网站 3-23

1:  :before 选择器在被选元素的内容前面插入内容 2:  float是什么?浮动在CSS中的作用 3:CSS运用在React中的两种方式     使用className属性,CSS内容就用link加在index.html中即可,或者用style; 4:CSS元素垂直居中: vertical-align: middle;

常用的代码重构方法

一.提取子函数 说白了就是一个大函数里,可以根据不同功能分成几个小函数,因为说不定,其他函数也可能会用到其中的函数 二.把大家都要用的方法放到父类中     所有对象都要执行同一个方法,那就把这个方法放到他们的父类中 三.下移函数到子类    子类特有的方法就没必要放到父类中,单独实现就可以了 四.封装固定的调用逻辑(有点模板模式的意思) 代码会按照一定的逻辑执行,要完成这个功能

川流不息,勤奋不止

古人刻苦勤奋,例子举不胜举。“牛角挂书”、“囊萤映雪”、“凿壁借光”、“刺股悬梁”和“目不窥园”等,他们夜以继日,勤学苦读,刻苦努力,埋头读书,甚至足不出户。“若非一番寒彻骨,那得梅花扑鼻香。”是的,只要人生努力向上,好好学习,未来的道路可能就会少点坎坷,多点平坦,少点困难,多点“为之,则难者亦易已。”少走弯路,多条笔直的大道。 陶渊明觉得读书没有什么秘诀,写下:“勤学如春起之苗,不见其

工作这么久了,你还没有重构过代码?

为什么要重构代码 代码重构是在不改变代码功能的前提下,对现有代码进行改进和优化。这是编程的核心部分之一,不能忽视。重构代码可以增强代码的可读性、可维护性和可扩展性。它的主要目的是提高性能并提高开发人员的能力。 提取代码 该方法是将部分代码块转换为单独的函数。这是为了改善代码的结构和可读性。它会将长且复杂的代码块提取到更小且更易于管理的函数中。 要提取代码,我们首先需要找到执行特定任务的代码

不止程序员!未来职场的王炸组合也许就是“计算机+X”!

每年毕业季,都会有不少同学感叹计算机行业“太卷了”,连实习都竞争激烈,不禁让人担忧:学计算机未来还吃香吗? 选择专业时,毕业后好不好找工作,的确是需要慎重考虑的关键因素。 放眼当前就业市场,无论是经管、文史、工程、艺术,还是化工等专业,都面临着各自的就业挑战。相对而言,计算机的就业面依然十分广阔。 学计算机,并不意味着只能做程序员。 互联网、金融、制造业等各行各业,都需要大量具备计算机技术的

Vue学习笔记(一)基础使用、过滤函数、重构函数、汇总函数

1后期用编辑器vscode v-once  <h1 v-once>{{message}}</h1> 设置该选项的只在页面改变一次。 v-html   <h1 v-html>{{url}}</h1>    变量中 url='<a href="http://www.baidu.com">百度</a>'  则可以显示  如果不设置 v-html 则原样显示。 v-text    <h1 v-text="

找工作小项目:day16-重构核心库、使用智能指针(3)

day16-重构核心库、使用智能指针(3) 最后将使用这个库的方式进行展示。 1、客户端 在while ((o = getopt(argc, argv, optstring)) != -1)所有的操作都是获取参数的操作,threads 、msgs 和wait 分别指线程数、消息长度以及等待时间。 创建一个长度为threads的线程池,绑定任务(这种方式常用于回调函数的绑定,可以将某个函数与特

重构大学数学基础_week05_雅各比矩阵与雅各比行列式

这周来讲一下雅各比矩阵和雅各比行列式。 多元函数的局部线性属性 首先我们来回顾一下向量函数,就是我们输入一个向量,输出也是一个向量,我们假设现在有一个向量函数 这个函数意思就是在说,我们在原来的平面上有一个向量(x,y),经过这个函数的变换后,他变成了向量(x+sin(y),y+sin(x)),很明显,这个变换是非线性的,原来的平面会扭曲成下面这个样子 但是这个函数变换有一个比较简

Eclipse 重构菜单

Eclipse 重构菜单 Eclipse 是一款广受欢迎的集成开发环境(IDE),它提供了强大的代码编辑、调试和重构功能。在软件开发过程中,重构是一种重要的实践,它可以帮助开发者改进代码结构,提高代码的可读性和可维护性,而不改变其外部行为。Eclipse 的重构菜单包含了多种实用的工具,使得重构过程更加便捷和高效。 1. 重构菜单简介 Eclipse 的重构菜单位于主界面的“导航”菜单下,或

ffmpeg封装和解封装介绍-(8)解封装和封装重构

头文件: xformat.h #pragma once/// 封装和解封装基类#include <mutex>struct AVFormatContext;struct AVCodecParameters;struct AVPacket;struct XRational{int num; ///< Numeratorint den; ///< Denominator};cl