捣糨糊
这两天完成一个新需求,需要维护以前一个同事写的代码。
前几天花了一天时间读代码,好不容易都看明白了,感觉真是一团糨糊啊。苦不堪言。
要在以前设计的接口基础上增加新功能,我觉得是件非常违背我的美学的事情。如果就这么干下去,我会做噩梦的。所以一咬牙决定重构。好在是比较底层的代码,只有中间层调用这些接口,和上层无关。
大约删除了 2000 多行代码,重写加上新实现的功能,用了 900 行左右。接口数量,加上新加的接口,总数减少到原来的一半。
另外修改了调用这些接口的大约 30 个源文件。昨天晚上完成的时候已经是一点,似乎都眼冒金星了,才把整个工程编译通过。
今天战战兢兢的测试两天闷头赶出来的战果,上午居然一点问题都没有,让我心虚的很。下午找到一个 bug ,稍微安心了点。晚上解决掉提交了。终于舒心了许多。
精心设计,而不要过度设计,是多么重要的一件事啊。
不要以为你的团队每个人的水平都很高,足以理解你的每个”精妙“的设计。而一旦团队中真的每个人水平都深不可测了,那么,”精妙“的设计反而更容易被唾弃。虽然每个人都有能力看明白它。
所以、如果在十分钟内,不能通过讲解让一个新手明白这些代码该如果使用;或是不借助作者的帮助,一般人两个小时还读不明白;那么,就应该考虑是不是做出了错误的设计。即使你怎么看都没错,总有一天它也会被误用的。
另一方面,也不要轻易放弃设计。如果一个需求很难简单实现,又要考虑这又要考虑那,就不要随手实现了。可悲的是,如果手上的锤子越大,就越容易轻易把钉子敲下去。比如用 C++ ,轻易的加上几个类层次,弄点多态继承出来,最好再玩点模板技巧、来个操作符重载。搬出教科书,复制点设计模式。貌似轻易的把问题摆平了。
问下自己,真的吗?
一定要依赖语言高级特性才能解决的问题,设计方案一定有问题。相比较而言,如果你在用 C ,则不应该抱怨没有类,没有继承,没有虚函数;而应该庆幸你没有这些干扰思维、阻碍你做出真正简洁设计的东西。
少即是多。
Comments
Posted by: 福利工口姬 | (21) April 16, 2014 04:07 PM
Posted by: mmosquito | (20) September 24, 2009 02:17 PM
Posted by: 风舞影天 | (19) August 12, 2009 04:13 AM
Posted by: 赵中 | (18) August 3, 2009 11:12 AM
Posted by: 辰玉 | (17) August 2, 2009 05:49 PM
Posted by: zuixinyule | (16) August 2, 2009 03:58 PM
Posted by: fancy | (15) August 2, 2009 03:14 PM
Posted by: sjinny | (14) August 2, 2009 11:41 AM
Posted by: 啃饼 | (13) August 2, 2009 11:09 AM
Posted by: Rainssa | (12) August 2, 2009 09:54 AM
Posted by: chentan | (11) August 2, 2009 02:01 AM
Posted by: sjinny | (10) August 1, 2009 11:07 PM
Posted by: donkeyji | (9) August 1, 2009 09:46 PM
Posted by: jay | (8) August 1, 2009 06:32 PM
Posted by: xLight | (7) August 1, 2009 02:30 PM
Posted by: Ted | (6) August 1, 2009 02:29 PM
Posted by: 桂良 | (5) August 1, 2009 10:35 AM
Posted by: Anonymous | (4) August 1, 2009 10:31 AM
Posted by: Anonymous | (3) August 1, 2009 10:15 AM
Posted by: Maya | (2) August 1, 2009 07:58 AM
Posted by: zxboykiss | (1) August 1, 2009 01:41 AM