蛋式编程(Egg-Style Programming)与业务内设计与组件式编程(Component-Style Programming)(下篇)
@
§1 前言
参考资料
本文承接以前的帖子梳理,相关内容如下
- [蛋式编程(Egg-Style Programming)与业务内设计与组件式编程(Component-Style Programming)(上篇)](下简称 上篇)(https://blog.csdn.net/ZEUS00456/article/details/107576031)
- 设计 | 面向对象 - [设计原则总纲与深度理解]
前言概述
本帖上篇中提出了一个比较普遍的现象
成长-健康困境:是指强制业务需要发展的前提下,项目的业务一定程度上的增加导致项目可维护性更大程度的降低,并且这种现象只能削弱不能根治的困境。
基于这个现象,出现了一种比较普遍的研发模式
蛋式编程(Egg-Style Programming):即成长-健康困境(下文简称为 GHD)中研发人员的不完备研发的编程(研发)模式。同时若项目暂时未陷入困境,但随时间推移有能力导致出现的也可以定义为蛋式编程(下文简称为 ESP)。
§22 我们希望避免 ESP
§2.1 ESP 的成因
ESP 的成因,几乎可以归结为 持续性的不完备开发。不完备开发会造成不宜修复的坑,在填坑的过程中持续不完备开发导致坑的积累,最终两遍引起质变,导致团队不得不持续进行不完备开发,循环反复。
不完备开发 的成因有很多
- 时间紧任务重
- code review 形同虚设或压根不存在
- 需求本身就有问题
- 人员流动频繁,所以谁都不知道项目里的完整内容
- 项目过于久远,迭代过于混乱,神代码迭出
但即使将上述问题全部扫平,光大研发人员也不得不承认:我们几乎还是不能避免不完备开发
这是因为不完备开发的根本成因可以概括为——设计缺失
设计缺失又可以概略的分为两种场景
- 设计忽略:完全没有设计,研发过程直接跳过设计这个阶段
- 设计寸止:有设计,但设计得将将好满足当前业务,完全没有前瞻性或前瞻性不足而导致不能容纳业务迭代
- 设计过期:有设计且设计质量很高,但实在太久远或业务重大突破重构以致于“寿终正寝”式的不能满足当前业务
上面罗列的不完备开发众多成因,几乎都是因为促发了设计缺失导致不完备开发,进而腐化项目的
§2.2 避免 ESP 的思路
整体思路
既然造成 ESP 的根本成因是 设计缺失,那避免 ESP 的大思路肯定就是 落实设计
但这个问题既然还是问题,那一定没有这么简单
首先,以充分设计为前提的假设
下面的蓝图是努力的方向,但一定不能寄希望于存在这样的乌托邦
- 经过一段时间的学习或熟悉,我们大约知道项目中几乎所有类和接口的脉络
- 标识符命名良好,我们可以见文知意
- 逻辑具有明显的套路,我们看懂了一个点,就能顺带看懂一片
- 具有足够稳定的接口,所以功能总是方便扩展和迭代的
- 没有神代码,我们总是可以比较轻松的理解目之所及的一切
- 我们总是可以通过少量的工作,通过统一修改的方式完成看似复杂的功能点
- 业务线之间不耦合,只要有时间和精力,本项目没有我们不能改的地方
我们不难发现,如果上述情况真的达成,那么之前总结的问题或者不会出现,或者即使出现了也不会造成什么问题
- 我们可以很轻松的看懂项目,并沿用原有设计进行快速高质量迭代(这才是真正的敏捷开发)所以无所谓时间紧任务重
- 人员流动再频繁、项目历史再悠久,只要项目质量不受影响,就都与当前研发人员无关
- 良好的设计会引导研发和产品从更上层(宏观)的层面分析问题,需求会更健壮,也更容易发现与补正本就降低了出现概率的问题需求
- 实现落地会更简单,在研发人员水平及格的前提下,code review 可以降级成设计评审
其次,==
为什么会有设计寸止
设计寸止的出现无外乎两种原因
- 设计力度不够,没有前瞻到一定的程度导致设计没有达到应有的效果
- 害怕出现过度设计,因此对设计进行了收束,收的劲大了

浙公网安备 33010602011771号