难在复杂性的持续增加。
如果编写一段写完就扔的代码(如运维修复),那其实是可以很快做好的,想不通的地方绕一绕总也能搞得定。
但当你编写的是一段大规模使用,需要持续改进,并且不断有新功能需要添加的代码。那么难度就急剧增加了(这也是我认为的编程的主要难处)。
一方面,开始编写代码的时候就要考虑到以后的扩展性,而这个考虑又永远不可能是完备的,也不应该是完备的(不要过早优化)。只有一些基本的原则,比如保持单模块的独立性,避免模块间的耦合,这些原则的运用需要丰富的经验,并且不一定总是用好了。
另一方面,在代码的持续演进过程中,需要对抗代码的腐化。当原来拍着胸脯的确定因素突然变成不确定因素;当代码引入了不合理的功能(如需要理解上层逻辑);当有新的人来维护代码。代码腐化的结果是大大增加了工作量和减少了代码的稳定性。
扫码匿名提建议
直达CEO信箱