本篇针对第六章——“当你编码时”进行论述
我在编写代码的时候通常都会先过一遍设计思路,之后就开始下手,往往写到一般就有了新的改进想法,到那个时候再说(笑)。
其实编码的时候偶尔会发生这种情况,就是你无意写下的代码让你的程序成功运行,或者说再回过头来看的时候,你并不清楚这段代码到底有什么作用,但这种情况毕竟是少数,因为编码的时候通常都有很强的目的性,如果没有的话是无法达成目标的。可见,这种巧合编程我们不能对其保有依赖性。
编码需要面对大量的算法架构,算法速率则决定了我们的作品是否具有高效率。在算法的选择上,我们通常考虑它的时间复杂度和空间复杂度,这里通过O()表示法来实现两个复杂度的评估,这也是数据结构课上所讲的东西。而这里要注意,最简单的那个算法,并不一定是最合适的,我们需要考虑现实要求,它不仅仅是比谁“快”。
如果面向项目的话,我们还需要学会重构,也就是重新设计。这显然不是一个简单的活,你需要在已实现的完整代码基础上,将某个地方重新设计,还要保证连接无误,想想就头大。但当某段地方出现一些细小的异常时,重构的任务你就不得不提上日程,至少在它酿成大祸之前要解决它。
编码完成后,测试是必不可少的,如果是编程题目,或许把样例输入进去,看看输出结果是不是样例结果就完事了,但在项目中可不是这样,你需要保证每处地方都不能出错。那么,为了自己省点力气,我们需要那些“易于测试的代码”,比如进行单元测试,或者针对合约进行测试。
最后就是向导的问题,一些编码软件非常地“智能”,其中的向导甚至能帮你完成大部分工作,你只需要一个按键向它们求助即可,但这些代码不是你写出来的,你需要考虑偷懒背后的代价。