开发人员会遇到一种情况,就是产品经理跑来说,xxx功能的代码还在么,功能需要加回来。开发有时候会问,为什么又要加回来。有时候得到的回答是,你懂的。开发人员心里一万头羊驼奔腾而过。
业务变化甚至出现反复,我觉得是正常的事。但从开发人员的角度上来说,这当然是很操蛋的。虽然有SCM,但好的开发人员是不能容忍垃圾代码存在的,所以去掉的功能,代码通常也就移除了。
SCM的用途就在于把代码历史记录下来。所以理论上是可以找回这些代码的,但这仍然是操蛋的,毕竟历史提交很多,要找到哪些提交与此功能有关很困难。一种做法是,开发的时候新建功能分支(feature branch),每个新功能在各自的功能分支上开发测试,互相隔离,完成后再合并到开发分支(develop branch)上并删掉功能分支,这时候会在开发分支上生成一个新的提交(commit),包含了这次新功能的所有代码。之后想要找回代码也会比较容易,找到这个提交就可以了。不过,如果你没有认真写提交注释的习惯的话,就是大海捞针,也没折。
但事实上是,有时候我们几个功能特性会交叉开发,有时候甚至同时还要修复bug,如果一时偷懒没有另建分支的话,就很难区分了。即便有再好的工具,不能坚持好的工作习惯,清晰地追回历史也仍然是困难的。