写点什么

重构之十六字心法(一)

  • 2020-01-16
  • 本文字数:525 字

    阅读完需:约 2 分钟

重构之十六字心法(一)

这篇文章是我写过的所有文章里最难产的一篇,前前后后斟酌酝酿了好几个月。因为重构对于我来讲真的太重要也太深刻了,包含的内容和想说的也太多了。如果说这几年自己觉得在哪些方面的收获最大的话,非重构莫属了。

重构的威力

软件开发的难点在于不确定性,邱大师写过一篇《软件开发为什么很难》就提到


软件的复杂性来自于大量的不确定性,而这个不确定事实上是无法避免的。

需求在变,语言在变,框架在变,工具在变,框架在变,架构在变,趋势在变,甚至连组织结构都在不断的变化。


随着变化的不断产生,软件变得越来越复杂。就像那篇经典的《架构腐化之谜》中提到的一样,我们的软件也会像一个生命体,经历从新生到衰老腐化的过程。


而重构就像是一次手术,通过优化内部结构,减慢腐化衰老,让软件“青春永驻”,可见重构的威力。


重构教会了我如何通过高效安全地改善内部设计以使之适应外部的不确定性和频繁变化。

重构威力无边,就像是武侠小说中的一件插在石头上的上古神器,但同样也不是一般人可以轻松驾驭的。


如果运用不当,造成的损害也会同样巨大。



如何将重构这件神器运用自如,发挥其最大的威力,也是我一直在探寻的,即重构的手法和心法。


本文转载自健荐公众号。


原文链接:https://mp.weixin.qq.com/s/SyKu1m7FVXzB5fInmj44wQ


2020-01-16 11:511190

评论

发布
暂无评论
发现更多内容

设计一个大规模搜索引擎,大概有1000台服务器

linux大本营

搜索引擎 负载均衡 存储 分布式,

ubuntu安装x11 forword,并做好配置

linux大本营

Linux ubuntu

如何在lua中设置计时器

linux大本营

lua 协程 Coroutine 计时器

Java 把 Map 的值(Value)转换为 Array, List 或 Set

HoneyMoose

dbtemplate 是什么

weigeonlyyou

mybatis ORM 嵌入式应用 API Gateway 嵌入式设备

在OpenHarmony 开发者大会2023,听见百业同鸣

脑极体

鸿蒙

Django笔记十四之统计总数、最新纪录和空值判断等功能

Hunter熊

Python django like contains startwith

C++11引入了std::atomic模板类无锁栈的实现如何判断栈空

linux大本营

多线程 线程安全 C++11

linux脚本定义一个二维数组

linux大本营

Linux 脚本 二维数组

Spring 的 IoC(控制反转)

HoneyMoose

在Ubuntu的Vscode中怎么添加第三方库文件sqlite3.h

linux大本营

sqlite Linux ubuntu vscode

请详述c++中 lambda表达式使用

linux大本营

Lambda vector Function C++

linux脚本执行可变参数任务

linux大本营

Linux 脚本

改变this指向的方法

linux大本营

指针 C语言 this指针

fmt库c++

linux大本营

C++ fmt

Android WebView使用与JS交互

松柏不怕雪

webview js java; Android; JS Bridge

时间管理:不要让时间偷走你的饼干

蔡农曰

程序员 生活 时间管理

面对当下火爆的AIGC,我们可以做些什么? | 社区征文

AXYZdong

三周年征文

怎么查看 .crash文件

linux大本营

Linux gdb Crash 内核 perf

C语言sqlit3创建表格怎么写

linux大本营

sqlite 数据库 C语言

dpdk l2fwd需要配置哪些参数

linux大本营

DPDK

什么是前端开发领域的 Cumulative Layout Shift 问题

汪子熙

前端开发 angular web开发 web开发基础 三周年连更

Reactive响应式编程系列:解密Lettuce如何实现响应式

大步流星

Reactive lettuce 响应式编程系列 Lettuce如何实现响应式 Redis响应式

测试CLIP zero-shot learning | 深度学习

AIWeker

深度学习 多模态 CLIP 三周年连更

我的Gopher成长之路

闫同学

三周年连更

企业微信接入系列-上传临时素材

六月的雨在InfoQ

企业微信 三周年连更 企业微信接入 上传临时素材

挑战 30 天学完 Python:Day12 模块Module

MegaQi

挑战30天学完Python 三周年连更

Apache derby 和sqlite进行对比

linux大本营

sqlite 数据库

一文带你看通透,MySQL事务ACID四大特性实现原理

架构精进之路

MySQL 数据库 后端 事务 三周年连更

我的开源项目与开源经历分享

秦少卫

GitHub 开源 前端 Fabric.js 图片编辑器

为什么要理解OpenAI和GPT-4?LexFridman谈对话Sam Altman开场白

B Impact

重构之十六字心法(一)_语言 & 开发_王健_InfoQ精选文章