reuixiy / io-oi.me

Blog of reuixiy!
https://io-oi.me
Other
99 stars 40 forks source link

写代码 #104

Open reuixiy opened 3 years ago

reuixiy commented 3 years ago

(被问以下代码是否可行)

vm.otherChange=()=>{
  *form.*Officer.comments=vm.remove*Other1;
  *form.depOf*.comments=vm.remove*Other2;
  *form.depOf*.comments=vm.remove*Other3;
  *form.*Reviewer.comments=vm.remove*Other4;
}

:可是可以……呃,我去你那看一下……

:呃(滚动鼠标),你这「相同的」代码重复了四遍(function1, function2, function3, function4)……就是,能不能把这四段写成一段……你看这四段之间的区别其实就是角色不同,所以你可以新增一个变量,将这个变量作为这个对象的键,也就是给 funciton 新增一个参数,然后——

:我知道,但它(指上面这段代码)能不能工作?

:能……

:那就行了,现在就是先完成这个任务(工单),优化以后再说。

:呃……也行……


(以下为自言自语)

:什么是简单和极简?A、B、C、D 四个角色,function1()function2()function3()function4() 不就是最简单的吗?这样写最扁平,这样写最简明!以任务来说,这也是完成这个任务的最高效方式!不需要将一维的简单问题抽象复杂化为绕来绕去的打结问题!

:Jeez…可你是人类,不是机器啊!DON'T REAPEAT YOURSELF!

reuixiy commented 3 years ago

起点:先完成任务,优化以后再说,不管代码长啥样

恶化:代码越写越多,而后期代码可能依赖于此,再次妥协,以此重复……

结果:恶习不改,Bugs 不断,而垃圾代码交织不断,导致 Bugs 几乎越来越难以修复!

最终:整个代码仓库被污染,不得不大量 Revert、重写,甚至弃之。

教训:严格把控代码 Review 的质量,不通过无法 commit 进 develop。对一切危害代码仓库生命安全的垃圾代码,绝不心软手软,绝不仁慈!坚决 Reject!这是对代码仓库的生命负责,也是对新学习者负责!