复用代码的陷阱

41 阅读1分钟

组件化, 代码复用, don’t repeat yourself, 听到这些词我都已经 ptsd 了

这就像, 产品经理说 '这个地方要小小地改一下’ 一样, 勾起了我痛苦的回忆.

因为很多代码是揉在一起的, 改了这个, 那个就崩了

这所以出现 "代码揉在一起” 的问题, 是因为 "追求代码复用, 避免代码重复”,

出发点是好的, 但做的过程中错了

很多时候我们将看见的重复代码 merge 为一个 公共组件或者函数

然后通过 参数, flag 去控制其执行分支

这使得代码执行分支被混在一起, 代码变得更复杂

然后就有人跳出来, 说 "我们不能用 if else, 也不能用 switch 语句, 我们要用多态”

当听见多态这个词的时候, 我又PTSD 了

这里的多态是指抽取一个基类, 通过创建不同的子类来实现不同的条件分支

但往往变成, 基类里的东西非常少, 或者基类里的东西经常被子类重写了

这意味着, 这个基类的抽象, 很不稳定, 使得这个基类变成了 '鸡肋’

多态 无法减少 代码执行分支 带来的复杂度