如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

重构之十六字心法(一)

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

    阅读完需:约 2 分钟

重构之十六字心法(一)

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

重构的威力

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


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

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


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


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


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

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


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



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


本文转载自健荐公众号。


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


2020-01-16 11:511139

评论

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

河南省区块链产业联盟成立暨可信区块链技术创新大会启幕

CECBC

可信区块链 提升核心技术 产业联盟 产学研用

判断两个链表是否重合

LEAF

第四范式自动化推荐系统:搜索协同过滤中的交互函数

天枢数智运营

人工智能 推荐系统 搜索

案例解读:深入理解浏览器的缓存机制

华为云开发者联盟

缓存 浏览器 服务器 缓存穿透 华为云

CDN百科第八期 | 我的网站到底需不需要CDN加速?

阿里云Edge Plus

网站 CDN 云直播

nginx安装配置(windows)

陈靓-哲露

《深度工作》学习笔记(2)

石云升

学习 专注 深度工作

What's New in Dubbo-go v1.5

apache/dubbo-go

dubbo Go 语言

极客大学架构师训练营-单向链表相交问题

Geek_zhangjian

应用开发基础之-数据结构与算法

superman

HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第2章HTML基础知识

Geek_8dbdc1

CSS html

程序员的晚餐 | 7 月 27 日 美味鲫鱼豆腐汤

清远

美食

服务器是什么?其作用及有哪些分类?

德胜网络-阳

服务器

判断链表相交

GalaxyCreater

算法

NameNode架构图解

我是个bug

Java 大数据 hadoop

敏捷开发:一文了解影响地图和用户故事地图之间的那些事儿

华为云开发者联盟

产品设计 敏捷开发 后端 地图 开发流程

【好书推荐】《Python黑魔法指南》-附高清PDF版

华为云开发者联盟

Python 开发者 书摘 python3.7 书籍推荐

BIGO技术 | Paxos的工程实践与极致优化

InfoQ_3597a20b53cc

BIGO

4. JSON字符串是如何被解析的?JsonParser了解一下

YourBatman

Jackson JSON库

计算机网络基础(十)---网络层-迪杰斯特拉算法

书旅

算法 计算机网络 网络 最短路径

极客大学架构师训练营 - 本周总结

Geek_zhangjian

区块链在公益慈善行业的应用研究

CECBC

区块链技术 公益组织 治理 数据透明

拒绝贴标签的懒惰

zhoo299

随笔杂谈

JVM系列之:String.intern的性能

程序那些事

性能 JVM string GC

什么是数字孪生,它的应用价值在哪里?

华为云开发者联盟

AI IoT 数字化 汽车电子 工业互联网

区块链的现象级应用应该什么样子

CECBC

产业落地 政策扶持 区块链革命 价值传递

百万并发「零拷贝」技术系列之Java实现

码农神说

Java 架构 高性能 零拷贝

BIGO技术 | Paxos的工程实践与极致优化

InfoQ_3597a20b53cc

技术

硬核干货:葡萄城 SpreadJS 前端表格技术分享

葡萄城技术团队

Excel SpreadJS 表格控件 表格开发

判断两个链表是否合并

Z冰红茶

将Arch Linux安装到U盘

Kurtis Moxley

Linux 安装操作系统

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