在编写代码中有许多技巧,有的是程序语言实现层面的,有的是算法和数据结构方面的,类似的文章在网上已经有非常详细的说明了,本文打算从另一个比较抽象的角度来聊聊有哪些新手程序员不知道的小技巧,有了这些技巧会让你在日常写代码的过程中如虎添翼,提升工作效率。
假设我们要做一个课程设计,对于稍微有一些编程基础的同学来说可能一上来就写代码,然后反复修改。而学习软件工程的课程之后可能会考虑先做一个需求分析,新手可能会陷入比较混乱的思路中。所以在构思一个问题时,可以考虑从最大的几个方面出发,等大确定之后并记录下来,再一个个慢慢展开。比如一个常见的需求:写一个 xx 管理系统,如果思路是:用户管理 -> 用户数据库结构设计 -> CRUD 逻辑 -> 界面 -> 功能分析 的话,很快就会陷入混乱,但是如果思路改变一下,如下:
这样对于问题的分析就会清晰很多,实现起来也更加不容易遇到问题。
一些语言/工具的官方文档可能是纯英文的,对于英文不是非常好的程序员来说第一眼看上去不是非常友好,但是作为相关工具的开发者,其官方文档的维护者势必是最为了解对应产品的人,加上一般我们能看到对应文档的工具都是开源的,在有官方背景情况下的文档一定相比一些 xx 知道,xx 博客等有更加好的入门能力,且能涉及到一些大家博客中难以涉及到的一些比较小的细节。
如果英语水平不好的话,一定要花功夫提升自己的英语水平,这样可以非常有效地扩展自己的知识面。
这里说的调试不是在 "合适的位置" 写一个 print 语句判断一下某个变量对不对,而是对于代码的调试。包括但不限于对性能不够的地方进行测试和调优,对于代码性能的分析被称为——profiling。
profiling 工具 vs 和 gcc 都有,gcc 下的叫 gprof ,功能都是通过检测堆栈采样每个函数的 cpu 时间,统计代码热点,方便程序员有针对性的优化代码。
进行代码调试,如果自己的代码具有模块性能提升调试的效率,模块间注意去掉循环依赖,这样所有模块会自然分层,遇到问题的时候可以一层一层往下调试,对于调试而言,建议如下:
训练可以这样。写一个稍微有点规模的项目,大于 2000 行代码的那种,然后尝试把它分成小模块,每个模块一个文件,每个文件不超过 300 行(或者 500 行,有的语言可能本身更啰嗦一点),每行不超过 80 个字符。每个模块尽量只做一件小事情。注意让模块之间没有循环依赖。给每个模块写单元测试。然后,写出来这个 project 之后,把模块之间的依赖关系画个图(像这个:Go standard library DAG visualization),拿着这个图给你的一个(同样高数没有问题的)朋友看,让他参照着这个图去读你的源代码,看他能不能读懂你的代码要做什么,是怎么做的。如果他能读懂,说明你模块分得非常好。如果他读不懂,可以具体看他读哪个模块读不懂了,研究一下有没有更好的模块化方式或者写法。——如何高效地增强编程(特别是debug)能力? - h8liu
看完这篇文章的你可以在下一次写代码的时候尝试一下~
本文作者:Nova Kwok