Linus 关于coding “good taste”的说明
两者都是从单链表中删除目标节点,都需要遍历,效率上没有差别,但第一个实现是最符合直觉的方案,第二个方案换了个角度,但代码确实天翻地覆。
- 普通代码: 对目标节点的前一个节点操作(if 存在的原因),替换指向目标为下一个节点
- 神奇代码: 对目标节点直接操作,用后一个节点替换
换做我即便是用第一个方案很多次也不会去想更好的方案,毕竟前者太符合直觉了。这个新方案适用于很多链表操作,值得记录。
当然,Linus想说的应该是尽量在实现中减少例外的情况,尽量抽象出更好的模型适应所有的情况。