关于写代码这件事情

实习即将结束,渐渐发现,对于写代码这件事情,已经从最初仅仅是一个爱好向更专业的方向过渡了。

初来公司实习的时候,写代码的时候总是很随心所欲,只是追求实现功能但是对于代码的规范性重视不够,结果被导师恶批了好几次,前几次的作业都拿了 D。现在觉得写代码其实和写作很像,写作是用汉语或者英语等等人类使用的语言来讲述一件事,描述一幅场景。而写代码则是使用计算机能理解的语言来描述一个过程,告诉计算机执行任务的具体过程。

对于写作,写出来的东西可以是受万千人喜爱的,也可以是永远都没人看的。对于写代码,写出来的代码有卓越的,也有不堪入目的。而自己努力奋斗的目的就是希望写出来的东西更加好一些。而对于这个“好”,它体现在多个层面:

  • 易读:让阅读者很轻松地读懂代码的意图,很容易在此基础上进行修改完善
  • 高效:代码执行起来有很高的效率,使用了高效的算法,大幅缩减了资源消耗
  • 稳定:代码能长期稳定地运行,运行环境的变动,对代码的正常运行影响很小

我希望写出来的代码首先容易阅读,在一个大的软件开发团队里,这是最最基本的需求也是最最重要的。世界著名的计算机科学家 Donald E. Knuth(高纳德)曾说:”程序是用来让人看的,只是偶尔让计算机执行一下“。对于代码可读性的追求,一定程度上也能体现写这段代码的人的追求。为了达到这个目标,我阅读了一些关于代码规范的书籍,作者们告诉了我一些好的实践,并提示我那些是不好的地方要注意避免。

同样的问题,不同的解决方法带来的结果也是不同的。曾经在《数据结构与算法分析》这本书上看到最大子序列问题,对于这个问题有很慢的 O(n³) 的解法,也有最佳的 O(n)的解法。为了让我们的代码更加高效,需要将自己的视线投向算法方面,了解常用的数据结构,明白常见的算法的原理并加以运用,这能给自己写出的代码提速不少。当然了除了高效的算法,一些计算机知识也是写出高效代码所必须的,比如缓存的思想,程序调用栈等等,了解这些能更大程度地帮助自己写出好的代码。

作家们能写出好文章,也不是一蹴而就的,在此前大都经历了艰苦卓绝的练习,为了有东西可写还要广泛涉猎了解更多。写代码同样如此,为了写出好的代码,也经历了很多练习,经历了很多次错误,在这过程中积累经验。为了代码看起来优雅,对于变量命名,API 设计,代码规范方面要有一些研究。为了代码执行起来快速,要了解机器的特性,掌握它的古怪属性。有的时候还不得不挽起衣袖看着机器一步一步地执行代码,从而明白为什么机器执行的过程不符合预期。

如今,觉得写代码也并非什么很有科技感的事情,对于电影里黑客的场景也有了正确的认识。写代码它只是万千平凡工作中的一种。十多年前,母亲工作在缝纫机前。十多年后,我工作在电脑前。这只是因为十多年间科技进步了,人们工作的环境变了,如今坐在写字楼里的我们,和十多年前坐在小作坊里工作的人们也没有太大的不同。退到十年前,那个时候我可能在修理自行车,或者在修理电视机呢。

给家里打电话,父亲常提醒我,提醒我要努力把自己的技能锤炼扎实,只有这样才能时刻处于主动。父亲在农村老家给人搞装修,手艺人。自幼我就觉得父亲做出来的东西,好,看着漂亮。常有人家修了房子,专门找父亲来帮他家做装修工作。对于这一点我由衷地佩服父亲。父亲总是对自己做的东西有很高的要求,别人马马虎虎应付过去了,但在父亲这里就不行。作为手艺人我觉得对自己的技术水平一定要费心思去提高,对自己的作品要保证其质量。同作为手艺人的我,要向父亲学习,把每个项目都尽可能做到最好,并不断锤炼自己的技术水平。

是的,写代码就是这样一件很平常的事情,你可以把看看做是另外一种形式的写作。我们都觉得自己写出来的东西很棒,就像中学时期每次都觉得自己的作文写得很棒一样。但是实际上永远没有想象的那么好,当然往往也不是太糟。但为了做的更好,要广泛去学习,扩宽视野;要大量练习,巩固知识;要反思沉淀,探索未知领域。

最后,作为一个手艺人,无论何时都要对得起自己那颗追求极致的心。极致是怎样的?极致=极致++,永无止境。

3个月的实习让我对写代码这件事情多了一些认识,我明白要想写得一手好代码,前面要走的路还很长。还有很多前辈写的书需要细细理解消化;还有许多框架类库需要去使用去学习其设计思想与理念;还有很多未知的坑需要去填,还有许多怪需要去打……好在我还年轻。

#代码