by mutecat@byhh 2007-09.26
编程,所有IT人不可避免的一项工作,写程序也写了好多年了,今天把自己的一点心
得拿出来与大家分享,目的是抛砖引玉,希望版内高手积极参与讨论:)
1. 同一问题的反复出现
在我这几年的编程过程中,有一个很重要的感受就是同一问题肯定会不止一次的出现,
相信很多人会产生共鸣,可能你今天碰到一个问题,这个问题正是你半年前或者更久遇到
并解决了的,但是当时是怎么解决的,不记得了!是不是很郁闷?甚至怀疑自己的记忆力
有问题,其实忘了很正常,最好的解决办法就是把你的问题记录下来,我比较喜欢把我解
决了的问题写成技术文章拿到版面和大家讨论,因为这会有额外的收获,大家的回帖可
以及时的指正我的错误,而且有时还能提出更好的解决办法,毕竟人多力量大。
2. 如何正确看待遇到的问题?
你是不是希望你写出来的程序一次性通过?没错,我以前也这样幻想过,但是真实
情况是几乎一次性成功的概率为0,所以遇到问题不要抱怨,把这视为一个规律,正确
的去看待它, 况且只有遇到问题去解决它,然后才会有所提高。
3. 看代码与写代码
提高编程能力一个很好的方法就是看别人写的代码,但是看代码与写代码还是有所
不同的, 这点我有很大感触,你可能看了N多N多的开源软件代码,然后就自以为是的
认为我的编程能力很不错!等到有一天你真正自己去敲代码的时候,你才会发现自己的
编程功底是多么的薄弱,一个变量该申明成什么类型? 这个变量是放在头文件中还是
c文件中? 该如何组织各个模块?种种问题出现了,所以我们要主动去写代码,这样才
会真正的提高。
4. 如何调试代码?
我只针对Linux系统来说,Linux下有个很优秀的调试工具gdb,但是有多少人去用它?
很多人调试程序就是在代码中加printf语句,当然这也是一种行之有效的办法,但是对于
一个大型的工程,内存泄漏,段错误,光靠printf有时是解决不了的。为什么有的人遇到
一个问题一两个小时就搞定了,而同样的问题你可能要花一两天,抛开其它方面的因素,
使用正确的调试工具是一个关键,tcpdump、strace、gdb、memwatch这些工具很有用,
可能你会说gdb使用起来太麻烦,我不熟悉。为什么不花半天时间去熟悉它,没有人天生
就会使用它,花一两天时间换来以后高效率的调试,何乐而不为呢?
5. 代码管理
这是很多人忽视的地方,不管你的代码量有多大,只要需要长时间维护的代码建议
使用版本控制工具CVS或者SVN,有时候你想把代码恢复到先前的某个状态,但是你忘了
修改的细节,这是个很头疼的问题,使用CVS或者SVN能很好的帮你处理这个问题。在
多人协同开发的项目中,使用版本控制工具那就非常重要了,在我所做的项目中,我就
遇到过这个问题,一开始没有使用SVN来管理,代码不停的拷贝,杂乱无章,让我很是
头疼,我所做的修改不能很好的融合到最新的代码中,大量的重复性的工作。学会使用
CVS或者SVN也需要至少半天时间,但是我们有必要学会使用这些工具,因为他们能够提
高我们的开发效率。
6. 代码编写
拿到一个需求之后,切忌立即动手去code,一定要做充足的调研,目前有哪些解决方
案都要搞清楚,然后选择一种合理的方法并设置大体的框架。在设置的时候,要考虑
程序的可扩展性,需求是动态的,我们要保证一旦需求变更之后我们的代码能够很好的
适应。