本文已参与「新人创作礼活动」,一起开启掘金创作之路。
从阅读别人家的代码,到调试别人家的代码,再到编写自己家的代码,调试自己家的代码。这是一种蜕变,更是一次畅游程序界的旅行。
一、高效阅读程序代码
阅读代码是程序猿必须掌握的技能之一,对于很多没有程序设计基础的猿们而言,那浩瀚如烟的代码犹如天书一般,让人望而生畏。
代码和文字,都是作者思想的间接表达,于是乎,读代码和读书,本质上是一样的。
1.整体把握法
- 阅读C++代码的顺序
预处理头文件
各函数声明
主函数
{
主函数体
}
各函数定义
以上是一个函数的程序结构,如果从头至尾地读,多半顾此失彼;明智一点的,应该先读主函数,遇到调用的地方,直接跳到调用函数。
- 整体把握语意
对于代码中的函数,大部分只要了解它的功能即可,刨根问底的精神不值得称道。而了解函数或语句块的功能,大致有二:
1)、猜(优秀的程序员在给函数、变量以及参数起名的时候,会考虑到它们的实际含义。)
2)、看注释(这一点尤其值得称道!)
2.经验法
九个字:理清层次,寻找关键点。
3.模拟法
用大脑和笔按照代码的思路一步一步进行推演。
调试程序代码的技巧
是骡子是马,拉出来溜溜。代码搞定了,下一步自然就是调试,但指望他一击必胜,还是颇有难度的。调试的流程大致如下:
- 编译
- 连接
- 运行
- 测试
编译和运行统称编译阶段,需要检查语法错误;运行和测试统称运行阶段,需啊检查语义错误。
1.语法错误
编译器一目了然,无需作者亲自操刀。
2.语义错误
这种错误也分两种:
1)考虑不周或输入错误导致程序异常
2)程序设计思路错误导致程序异常
对付第一种,找出输入的错误或考虑临界情况的处理;对付第二种,少年,你得重新来过。
三、编写程序的技巧
能从头到尾写一段程序且运行成功,那是相当有成就感的;But,傻子才会从头到尾写。在庞大的程序帝国中,有一种人叫架构设计师,据江湖传言,他们彻底摆脱了语言的束缚,身兼百家之长,熟悉很多语言的精髓;知道软件发展趋势,会开发新一代产品或制订新一代产品的方案,知道各种软件产品特性。架构设计师会根据这些特性做出非常好的产品。另外,杰出的架构设计师具有创新技巧的本领。当然,吾辈还需付出相当大的努力才可与之匹敌,不过,先在脑海中种下这颗种子还是有必要的。
现实生活中的很多问题之所以能够用计算机来处理,是程序的功劳。程序=算法+数据结构。所以数学功底很重要!!!数据结构的扎实功底很重要!!!
而在所有计算机能够处理的问题中,大致分为三类:
算。比如说计算利润、计算方程根、数列的和。
找。找最大数、最短路径。
实现功能。比如撤销、重做、实现模拟某种操作的功能等。
1.算法实现
将实际问题转化为数学知识。
2.匹配实现
减小分支,缩小范围。
3.功能实现
找到相关的方法,力求正确、简洁、高效。对于约瑟夫环、汉诺塔等经典问题有深入的理解。此外,递归的精髓也要了解。