15 April 2013

这两天终于完成项目的第一个版本,感触颇多。这个项目是做一个软件,与网络有关,需要有图形界面。我是在windows下使用vs做的开发,尽管难度一般,但是在细节上还是耗费了大量时间。

关于学习

刚刚知道任务,不知该如何入手这是常事。比如要做图形界面,windows下可以是MFC,可以用windows的控件,搜集了很多资料,也问了其他同学,才知道该如何做,甚至是如何“速成”。这里的学习不再是循序渐进式的,也不能从基础学起,开发速度太过缓慢,这时就考验我们搜集资料与提高学习速度的能力了。我的经验就是多查、多问,在研究学什么、怎么学上面多花些时间,也许可以为真正开始着手去做省去远远多于这部分的时间。

关于细节

在编写图形界面之前,功能代码已经完成,就差与图形界面相结合,但是真到这部分时,发现远远没有自己想的那么简单。记得听别人说过,一个好的代码就是要把所有可能性都想到并解决。真正编写的时候才发现要注意很多细节。比如按下某个按键时如何反应,如果出错显示什么。程序到现在可能还有很多bug,有时由于某种原因而崩溃,这说明自己还有很多地方没有考虑到。

关于代码

这次是编写代码量最大的一次,1000行左右的代码。当然,自己一直没有这方面的编程经验,所以这是一次难得经验。自己对于当初在书中看到的话有了更深刻的理解。

1.全局变量

编程时尽量少使用全局变量,全局变量生存周期长,占用空间,会引起竞争,在某个时候被修改后很难定位等问题。这次编程最大的感受就是“全局变量满天飞”。数据结构要全局,某些标志位要全局,句柄要全局,到最后,发现很多extern,但是有时又不知道不用全局变量该如何处理。在编程中遇到了几次由于全局变量没有设置好而导致的bug,而如果代码规模继续扩大,bug的数量也将增加。

2.嵌套

为了考虑到方方面面,if语句必不可少。如此,代码中if语句会多层嵌套,一是代码很乱,资源分配和释放频繁,二是嵌套多了,跳出嵌套容易出错。很多次都想使用goto语句,但是Dijkstra说过goto语句的“邪恶”,于是都用其他方法迂回了过去。考虑的可能性多了,嵌套一定会出现,如何写出更好的代码需要自己不断锻炼。

总结

这次编程经历让自己对如何编出更好的代码有了深刻的体会,也就是为什么我们要多看别人的代码,只有多学习别人如何编出漂亮的代码,自己才能有提高。



blog comments powered by Disqus