- 2020-05-13
本文来自去年五月份接手现有项目的几点想法,在这里总结整理下。
- 快速熟悉一个新的系统或技术
对我来说熟悉、学习一个现有的系统或技术最有效的两个方法:
1)实践中学习:带着问题去,在现有系统循序渐进的修改问题,进而达到了解整个系统。 2)重构式学习:这里的重构并不是推倒重来,而是像小时候拆开电视机一样,带着好奇心和更好的实践方案,将系统中可控的部分进行循序渐进的重构。以其最终达到了解全局的目的。
- 微重构 —— 迭代式优化
一提到对老旧系统或无主代码的重构,项目组的每一个人都会和紧张,对于一些复杂的场景,就算是自己写的代码时间一长很容易忘了怎么回事,何况一些开始并不了解的场景和业务。但是我这里提到的重构并不是什么大范围的重新开发。而是以一种循序渐进的形式,持续优化代码达到预期的标准。我们需要把重构的概念拆成两个维度,一个是什么是重构:在我理解的重构就是针对某一部分代码或业务,重新设计、构建,以期达到更好的性能或体验。另外一个维度是重构模块的大小。我们之所以会觉得紧张,是因为我们更多是进行系统级的重构,将整个系统或者其中的一个很大的模块彻底推翻重来,这是成本非常高昂的。而我更提倡的是极限编程所主张的那种重构:可以快速、经常性的通过重构改进系统、功能设计。
软件系统的复杂性很多时候超出我们的想象,又由于现今互联网的开发模式对速度又有极高的要求。从理解能力和时间两个方面都无法使我们在一开始就将代码开发到一个很高的标准。整个开发的过程就是我们不断发现问题学习业务的过程,而学习过程最重要的就是反馈,我们能不断将我们对系统和业务的新的理解和经验投入到小规模重构上,不断优化直至达到完美。这才是对我来说最有效的开发方式。
- Clean Code 三部曲
我们很多时候都在讲 代码整洁,但是很少有人对代码整洁做一个详细的区分和定义,在工作的这些年里阅读过很多人的代码,我将代码整洁程度分为三个部分:
- 行级代码整洁
- 逻辑级代码整洁
- 模块级代码整洁
- 架构级代码整洁
1)行级代码整洁是说每一行的代码都是整洁的,这包括 变量命名准确、方法命名的语义化、整体代码在同一类对象和方法中使用同一套命名规则、通篇代码空格括号分号有一致性 2)逻辑级代码整洁是值整套代码的逻辑是清晰的,逻辑清晰并不代表代码在行级和模块级的代码是整洁的,但是能一眼看出写代码的人通过循环、条件判断、方法拆分,至少有着清晰、连贯的逻辑,不至于自己写着写着不知道自己在干什么(这种情况在新手应对复杂业务逻辑是非常常见)。 3)要达到模块级别代码整洁,对于一些复杂的业务逻辑,我们必须设一套代码逻辑,比如在一些经典场景下使用诸如 单例、工厂、发布订阅、面向对象 等设计模式。以期实现模块的高内聚低耦合,提高复用性,更利于别人的理解和维护。要达到这种级别的CleanCode有很多时候真的需要灵感,你知道在这种情况下需要加一层抽象,在那中情况下要使用工厂。但没有人是平白无故学会这些的,无非都是使用的多了就会用了,所以保持持续重构的思路,不断对代码做优化才是关键, 4)架构整洁其实是 other story,其包含这代码的整洁和很多其他的设计,这块我们会进行单独的梳理。